History Kaybetmeden Git Mirror ile Migration
Versiyon kontrol dediğimizde artık aklımıza ilk gelenden ziyade tek aklımıza gelen teklonoji hiç şüpesiz git. Linux ile üvey kardeş de sayıldıklarından penguene gönül verenlerinde ilgi odağı.[1]Linus Torvalds ve Git
Github'dan gitlab'e veya eski bir gitlab sürümünden yeni bir gitlab sürümüne geçmek istiyorsanız ( gitlab backup restore, farklı versiyonları desteklemiyor ) ve bunu yaparken history, tag, branch vs kaybetmek istemiyorsanız doğru yerdesiniz.
O zaman haydi, helva yapalım...
Adım 1:
git clone --mirror old-repo-url new-repo
Clone'u hepimiz kullanmışızdır, mirror ne peki? Direk dökümantasyondan copy/paste;
Compared to --bare, --mirror not only maps local branches of the source to local branches of the target, it maps all refs (including remote-tracking branches, notes etc.) and sets up a refspec configuration such that all these refs are overwritten by a git remote update in the target repository.
Adım 2:
cd new-repo
git remote remove origin
Eski repoya olan bağlantıyı kaldırıyoruz.
Not: Aslında bu adım şart değil. Birden fazla uzak repoya bağlı olabilirsiniz. Ama bunu yapmak gelecekte komutlarınızı kolaylaştırır ve sayısını azaltır. Yönetim maliyetlerini de düşürür. Bunun haricinde bu makaleyi yedekleme için okuyorsanız dediğim gibi bu adımı atlıyabilirsiniz.
Adım 3:
Bu adımı uygulamadan önce, yeni reponuzun yeni git sunucunuzda oluşturulmuş olması gerekiyor!
git remote add origin new-repo-url
Adım 4:
Kısık ateşte kaynayana kadar karıştırın.
git push --all
git push --tags
Adım 5: ( ÖNEMLI )
cd ..
rm -rf new-repo
git clone new-repo-url new-repo
İlk adımda gerçekleştirilen clone, yeni commitler için kullanılamaz. Eğer bu adımı atlarsanız yeni commitler yapıp bunları pushlayamazsınız.
Eski clone'u dönüştürmenin bir yolunu ben bilmiyorum açıkcası çok da zaman harcamadım bulmak için de pek yok gibi.
Yeni git'iniz hayırlı olsun... 🙂
Linux sistem yöneticisi olarak başladığım kariyerime devops alanında devam ediyorum. Linux, kubernetes, docker ve go en sevdiğim alanlar.. Bunların dışında GCP ve AWS tecrübem var.
Yorum Yapın