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?
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?
Jawaban:
The git svn fetchperintah untuk melanjutkan git svn clonedikonfirmasi 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-svnproses 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-svnmenggandakan repositori Subversion yang ada:
git svn clone url://path/to/repo -s
The
-sbendera 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, mengganggu proses tersebut. Berjalan git svn clonelagi 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 fetchsecara efektif menyelesaikan operasi klon. Ini harapannya!
git svn rebasesetelah pengambilan untuk menyelesaikan operasi dan memiliki cabang utama yang mencerminkan bagasi
Seperti yang dikatakan VonC, CaptainAwesomePants dan Archi git svn fetchmelakukan triknya. Saya melakukan git svn clone url... --authors-file=path/to/filedan klon gagal karena salah satu penulis tidak ada di file penulis. Saya menambahkan penulis ke file dan menjalankannya git svn fetchdan 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.
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
From at least git 2.1.0...Adakah ide jika fitur ini ada di git 1.9.1?
git svn fetchmenyebabkan ketidakcocokan checksum untuk saya - dan tidak mungkin untuk disetel ulang karena tampaknya tidak ada HEAD: / - tetapi ini berfungsi dengan baik, hanya harus menghapus svn-remote.fetchdari.git/config
git svn clonejuga perlu disediakan (sebagaimana berlaku) untukgit svn fetch. Misalnya, saya telah menetapkan-r HEADuntukgit svn clonehanya mendapatkan revisi HEAD SVN. Untuk melanjutkan, saya menjalankangit svn fetch, yang mulai mengimpor semua revisi.