Saya mulai mengkloning repositori SVN menggunakan operasi kloning git-svn. Setelah sekitar 6 jam mengimpor (ini adalah repo besar), komputer saya pergi dan meniduri saya. Adakah cara untuk melanjutkan operasi tanpa mengulangi semua pekerjaan awal?
The git svn fetch
perintah untuk melanjutkan git svn clone
dikonfirmasi oleh beberapa sumber:
(Kebetulan, jika selama langkah klon awal koneksi Anda mati atau Anda perlu menghentikannya maka untuk melanjutkan klon Anda hanya perlu menjalankan perintah di atas untuk melanjutkan mengunduh riwayat).
Sepertinya ada kebocoran memori
git-svn
. Ukurangit-svn
proses tumbuh perlahan dan setelah sekitar dua minggu ukurannya menjadi 1,2 GB, di mana OS menolak untuk membiarkannya bercabang.
Masalahnya, ini adalah berkah terselubung.
Saya dapat melanjutkan klon yang terputus dengan "git svn fetch
" sederhana , dan itu berjalan lebih cepat dengan heap yang sekarang jauh lebih kecil.
Ini, bekerja dengan sangat baik, pada kenyataannya, saya terbiasa menyela dan memulai kembali proses tersebut setiap malam dan setiap pagi. Beberapa hari kemudian selesai.
Anda memulai petualangan Anda dengan
git-svn
menggandakan repositori Subversion yang ada:
git svn clone url://path/to/repo -s
The
-s
bendera mengasumsikan bahwa repositori Anda menggunakan "batang, cabang, tags" konvensi. Jika tidak, Anda harus menentukan secara manual direktori mana yang mewakili cabang dan tag, jika Anda ingin Git mengetahuinya.Ini akan memakan waktu lama, karena akan mengambil setiap revisi dari SVN dan melakukan secara lokal. Jika karena alasan apa pun itu berhenti, Anda dapat melanjutkan dengan
git svn fetch
.
git svn clone
juga perlu disediakan (sebagaimana berlaku) untukgit svn fetch
. Misalnya, saya telah menetapkan-r HEAD
untukgit svn clone
hanya mendapatkan revisi HEAD SVN. Untuk melanjutkan, saya menjalankangit svn fetch
, yang mulai mengimpor semua revisi.git svn clone
, mengganggu proses tersebut. Berjalangit svn clone
lagi tampaknya melanjutkan klon yang sedang berlangsung. Ada lagi yang melakukan ini?Saya menemukan sebuah posting blog yang memberikan apa (saya harap) adalah jawaban yang benar.
Rupanya, menjalankan
git svn fetch
secara efektif menyelesaikan operasi klon. Ini harapannya!sumber
git svn rebase
setelah pengambilan untuk menyelesaikan operasi dan memiliki cabang utama yang mencerminkan bagasiSeperti yang dikatakan VonC, CaptainAwesomePants dan Archi
git svn fetch
melakukan triknya. Saya melakukangit svn clone url... --authors-file=path/to/file
dan klon gagal karena salah satu penulis tidak ada di file penulis. Saya menambahkan penulis ke file dan menjalankannyagit svn fetch
dan melanjutkan dari tempat ia tinggalkan dan melihat git log nanti, tampaknya ia menggunakan penulis yang baru ditambahkan untuk menggantikan nama penulis komit jadi semuanya manis.sumber
Dari setidaknya git 2.1.0 Anda dapat melanjutkan hanya dengan menerbitkan ulang
git svn clone
Namun ini akan menduplikasi beberapa entri di .git / config Anda menghapusnya dan semuanya akan baik-baik saja
sumber
From at least git 2.1.0...
Adakah ide jika fitur ini ada di git 1.9.1?git svn fetch
menyebabkan ketidakcocokan checksum untuk saya - dan tidak mungkin untuk disetel ulang karena tampaknya tidak ada HEAD: / - tetapi ini berfungsi dengan baik, hanya harus menghapussvn-remote.fetch
dari.git/config