Tidak. Taruhan terbaik Anda adalah mengatur mirror dari repositori svn di repositori git khusus.
git svn clone -s http://subversion.example.com/ mysvnclone
cd mysvnclone
git remote add origin [email protected]:project.git
git push origin master
Kemudian Anda dapat menambahkan repositori git sebagai submodule ke proyek asli
cd /path/to/gitproject
git submodule add git://example.com/project.git -- svn-project
git add svn-project
git commit -m "Add submodule"
Ada satu perbedaan konseptual antara svn: eksternal dan submodule git yang mungkin membuat Anda tersandung jika Anda mendekati ini dari sudut pandang subversi. Subjek git dipatok pada revisi yang Anda berikan. Jika "hulu" berubah, maka Anda harus memperbarui referensi submodule Anda.
Jadi ketika kita melakukan sinkronisasi ulang dengan subversi hulu:
cd /path/to/mysvnclone
git svn rebase
git push
... proyek git masih akan menggunakan revisi asli yang kami lakukan sebelumnya. Untuk memperbarui ke KEPALA svn, Anda harus menggunakan
cd /path/to/gitproject/svn-project
git checkout master
git pull
cd ..
git add svn-project
git commit -m"Update submodule"
Saya baru saja melewati ini. Saya melakukan sesuatu yang mirip dengan rq, tetapi sedikit berbeda. Saya mengatur salah satu server saya untuk meng-host klon git dari repo svn yang saya butuhkan. Dalam kasus saya, saya hanya ingin versi read-only, dan perlu repo telanjang di server.
Di server saya jalankan:
Ini mengatur repo kosong saya, maka saya memiliki skrip cron untuk memperbaruinya:
Ini juga memerlukan fix-svn-refs.sh dari http://www.shatow.net/fix-svn-refs.sh. Hal ini sebagian besar terinspirasi oleh: http://gsocblog.jsharpe.net/archives/12
Saya tidak yakin mengapa
git gc
ini diperlukan di sini, tetapi saya tidak dapat melakukannyagit pull
tanpa itu.Jadi setelah semua ini, Anda kemudian dapat menggunakan submit git mengikuti instruksi rq.
sumber
Saat ini git-svn tidak mendukung svn: eksternal . Tetapi ada dua alat lain yang dapat membantu Anda:
SubGit
SubGit adalah solusi sisi server, ini memungkinkan akses Git ke repositori Subversion dan sebaliknya. Anda dapat merujuk pada dokumentasi untuk detail lebih lanjut, tetapi secara umum cukup mudah untuk menggunakan SubGit:
Perintah di atas akan mendeteksi tata letak cabang di proyek SVN dan kemudian akan membuat repositori bare Git kosong yang siap untuk mencerminkan proyek SVN. Anda dapat dimintai kredensial kecuali yang sudah disimpan dalam cache kredensial SVN di direktori ~ / .subversion. Anda juga dapat menyesuaikan
$GIT_REPO/subgit/authors.txt
untuk memetakan nama penulis SVN ke identitas Git.Pada saat ini Anda memiliki repositori Subversion yang terhubung ke repositori Git yang baru dibuat. SubGit menerjemahkan revisi SVN ke dalam Git commit pada setiap
svn commit
dan Git komit ke dalam revisi SVN pada setiapgit push
.Semua yang Anda butuhkan lebih lanjut adalah membuat repositori Git tersedia untuk pengendara. Lihatlah git-http-backend untuk itu. Kemudian Anda dapat menambahkan repositori Git yang dibuat sebagai submodule biasa. SubGit juga tersedia sebagai tambahan untuk Bitbucket Server, untuk mengetahui lebih lanjut lihat di sini . Jadi, tidak perlu menggunakan alat eksternal seperti git-svn atau lainnya.
SubGit adalah perangkat lunak berpemilik, tetapi gratis untuk perusahaan kecil (hingga 10 komuter), proyek akademik dan sumber terbuka.
SmartGit
SmartGit menggantikan git-svn di sisi klien. Informasi lebih lanjut tentang fitur-fiturnya dapat Anda temukan di sini .
Secara khusus, SmartGit mendukung submitula git dan svn: eksternal , Anda dapat mencampurnya dalam repositori Anda.
SmartGit adalah perangkat lunak berpemilik tetapi gratis untuk penggunaan non-komersial.
sumber
subgit
( subgit.com/documentation/... ) dansmartgit
mendukungnya dengansvn:externals
cara yang sama dengan.gitsvnextmodules
file eksplisit dalam copy pekerjaan. Yang berarti Anda masih harus menggunakan perangkat lunak ini untuk checkout eksternal dan Anda tidak dapat menggunakangit
utilitas dasar untuk checkout eksternal tersebut langsung dari server hub git eksternal sepertigithub
ataugitlab
. Jadi sumber yang dirilis kesnv:externals
server hub git eksternal tidak akan dapat diamati dan diunduh tanpa perangkat lunak ini yang masih merupakan masalah signifikan.Selain apa yang dikatakan rq, metode lain adalah dengan menggunakan proyek "eksternal" pihak ketiga ( http://nopugs.com/ext-tutorial ), yang lebih baik meniru cara kerja referensi eksternal svn. Dengan eksternal, Anda dapat melacak repositori git atau svn, dan terlihat lebih mudah untuk mendorong perubahan Anda ke atas ke repo tersebut. Namun, itu mengharuskan anggota proyek untuk mengunduh dan menginstal paket terpisah.
Saya belum menggunakan submodula atau eksternal; Namun, saya telah menghabiskan beberapa jam membaca tentang semua alternatif dan sepertinya eksternal akan lebih cocok untuk kebutuhan saya. Ada diskusi yang sangat baik tentang ini dan metode khusus lainnya dalam Bab 15 dari "Kontrol Versi dengan Git", oleh Jon Loeliger ( http://oreilly.com/catalog/9780596520120 ), yang sangat saya rekomendasikan.
sumber
Piston sedang ditulis ulang untuk mendukung ini, dan sebaliknya, ditambah URL Subversion yang ada di repoistory Subvresion dan git + git.
Lihatlah gudang piston Github .
Sayangnya sepertinya tidak dirilis.
sumber
Nah, ada
git-remote-testsvn
, jadi saya kira kira sepertiharus bekerja. Melakukannya?
sumber