SubGit (vs Blue Screen of Death)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Itu semua.
+ Untuk memperbarui dari SVN, repositori Git dibuat oleh perintah pertama.
subgit import directory/path/Local.git.Repo
Saya menggunakan cara untuk bermigrasi ke Git secara instan untuk repositori besar.
Tentu saja Anda perlu persiapan.
Tetapi Anda mungkin tidak menghentikan proses pengembangan sama sekali.
Ini jalan saya.
Solusi saya terlihat seperti:
- Migrasikan SVN ke repositori Git
- Perbarui repositori Git sesaat sebelum tim beralih ke .
Migrasi membutuhkan banyak waktu untuk repositori SVN besar.
Tetapi memperbarui migrasi selesai hanya beberapa detik.
Tentu saja saya menggunakan SubGit , mama. git-svn membuat saya Blue Screen of Death . Terus-menerus. Dan git-svn membuat saya bosan dengan kesalahan fatal " nama file terlalu lama " Git .
LANGKAH
1. Unduh SubGit
2. Mempersiapkan migrasi dan memperbarui perintah.
Katakanlah kita melakukannya untuk Windows (itu mudah untuk port ke Linux).
Dalam direktori nampan instalasi SubGit (subgit-2.XX \ bin), buat dua file .bat.
Konten file / perintah untuk migrasi:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Perintah "mulai" adalah opsional di sini (Windows). Ini akan memungkinkan untuk melihat kesalahan saat memulai dan membiarkan shell dibuka setelah SubGit selesai.
Anda dapat menambahkan parameter tambahan di sini mirip dengan git-svn . Saya hanya menggunakan --default-domain myCompanyDomain.com untuk memperbaiki domain dari alamat email penulis SVN.
Saya memiliki struktur repositori SVN standar (trunk / branch / tag) dan kami tidak memiliki masalah dengan "pemetaan penulis". Jadi saya tidak melakukan apa-apa lagi.
(Jika Anda ingin memigrasi tag seperti cabang atau SVN Anda memiliki beberapa folder cabang / tag, Anda dapat mempertimbangkan untuk menggunakan pendekatan SubGit yang lebih verbose )
Tips 1 : Gunakan --minimal-revisi YourSvnRevNumber untuk melihat dengan cepat bagaimana hal-hal mendidih (semacam debugging). Yang sangat berguna adalah untuk melihat nama atau email penulis yang diselesaikan.
Atau untuk membatasi kedalaman riwayat migrasi.
Tip 2 : Migrasi dapat terganggu ( Ctrl+ C) dan dikembalikan dengan menjalankan perintah / file pembaruan berikutnya.
Saya tidak menyarankan melakukan ini untuk repositori besar. Saya telah menerima "Kehabisan memori Java + Windows exception".
Tip 3 : Lebih baik membuat salinan dari repositori telanjang hasil Anda.
Konten file / perintah untuk memperbarui:
start subgit import directory/path/Local.git.Repo
Anda dapat menjalankannya berapapun kali ketika Anda ingin mendapatkan komitmen tim terakhir ke repositori Git Anda.
Peringatan! Jangan menyentuh gudang kosong Anda (misalnya membuat cabang).
Anda akan mengambil kesalahan fatal berikutnya:
Kesalahan yang tidak dapat dipulihkan: tidak sinkron dan tidak dapat disinkronkan ... Menerjemahkan revisi Subversion ke Git berkomitmen ...
3. Jalankan perintah / file pertama. Ini akan membutuhkan waktu lama untuk repositori besar. 30 jam untuk repositori saya yang sederhana.
Itu semua.
Anda dapat memperbarui repositori Git Anda dari SVN kapan saja berapapun dengan menjalankan file / perintah kedua. Dan sebelum beralih dari tim pengembangan Anda ke Git.
Ini akan memakan waktu hanya beberapa detik.
Ada satu tugas lagi yang bermanfaat.
Dorong repositori Git lokal Anda ke repositori Git jarak jauh
Apakah ini kasus Anda? Mari kita lanjutkan.
- Konfigurasikan remote Anda
Lari:
$ git remote add origin url://your/repo.git
- Bersiaplah untuk mengirim awal repositori Git lokal besar Anda ke repositori jarak jauh
Secara default, Git Anda tidak dapat mengirim potongan besar.
fatal: Ujung yang jauh menutup secara tak terduga
Mari kita jalankan untuk itu:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB, dll.
Perbaiki masalah sertifikat lokal Anda . Jika git-server Anda menggunakan sertifikat yang rusak.
Saya telah menonaktifkan sertifikat .
Juga server Git Anda mungkin memiliki batasan jumlah permintaan yang perlu diperbaiki .
- Dorong semua migrasi ke repositori Git jarak jauh tim.
Jalankan dengan Git lokal:
git push origin --mirror
( git push origin '*: *' untuk versi Git lama)
Jika Anda mendapatkan yang berikut: kesalahan: tidak dapat menelurkan git: Tidak ada file atau direktori seperti itu ... Bagi saya rekreasi penuh dari repositori saya menyelesaikan kesalahan ini (30 jam). Anda dapat mencoba perintah selanjutnya
git push origin --all
git push origin --tags
Atau coba instal ulang Git ( tidak berguna bagi saya ). Atau Anda dapat membuat cabang dari semua tag Anda dan mendorongnya. Atau, atau, atau ...