Saya membutuhkan ini juga, dan dengan bantuan jawaban Bombe + bermain-main, saya membuatnya bekerja. Inilah resepnya:
Impor Git -> Subversi
1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase origin/trunk
5.1. git status
5.2. git add (conflicted-files)
5.3. git rebase --continue
5.4. (repeat 5.1.)
6. git svn dcommit
Setelah # 3 Anda akan mendapatkan pesan samar seperti ini:
Menggunakan tingkat URL yang lebih tinggi: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo
Abaikan saja itu.
Ketika Anda menjalankan # 5, Anda mungkin mendapatkan konflik. Atasi ini dengan menambahkan file dengan status "unmerged" dan melanjutkan rebase. Akhirnya, Anda akan selesai; lalu sinkronkan kembali ke repositori SVN, menggunakandcommit
. Itu saja.
Menyimpan repositori dalam sinkronisasi
Anda sekarang dapat menyinkronkan dari SVN ke Git, menggunakan perintah berikut:
git svn fetch
git rebase trunk
Dan untuk menyinkronkan dari Git ke SVN, gunakan:
git svn dcommit
Catatan akhir
Anda mungkin ingin mencoba ini pada salinan lokal, sebelum mendaftar ke repositori langsung. Anda dapat membuat salinan repositori Git Anda ke tempat sementara; cukup gunakan cp -r
, karena semua data ada di dalam repositori itu sendiri. Anda kemudian dapat mengatur repositori pengujian berbasis file, menggunakan:
svnadmin create /home/name/tmp/test-repo
Dan periksa copy pekerjaan, menggunakan:
svn co file:///home/name/tmp/test-repo svn-working-copy
Itu akan memungkinkan Anda untuk bermain-main dengan hal-hal sebelum membuat perubahan yang langgeng.
Tambahan: Jika Anda mengacau git svn init
Jika Anda secara tidak sengaja menjalankan git svn init
dengan URL yang salah, dan Anda tidak cukup pintar untuk mengambil cadangan dari pekerjaan Anda (jangan tanya ...), Anda tidak bisa hanya menjalankan perintah yang sama lagi. Namun Anda dapat membatalkan perubahan dengan menerbitkan:
rm -rf .git/svn
edit .git/config
Dan hapus bagian [svn-remote "svn"]
seksi.
Anda kemudian dapat menjalankan git svn init
lagi.