SORU
11 EKİM 2010, PAZARTESİ


Büyük Gıt birçok küçük olanları içine bölünmüş depo

Başarıyla Gıt SVN deposuna dönüştürme sonra, şimdi çok daha küçük depoları yıkmak ve tarihi korumak istiyorum, O çok büyük ve Git deposu var.

Biri şöyle olabilir bir repo ayrılıyor yardımcı olabilir:

MyHugeRepo/
   .git/
   DIR_A/
   DIR_B/
   DIR_1/
   DIR_2/

Bak bu iki havuzları içine bu gibi:

MyABRepo/
   .git
   DIR_A/
   DIR_B/

My12Repo/
   .git
   DIR_1/
   DIR_2/

Bu önceki soru izleyerek denedim ama gerçekten ayrı bir repo (http://stackoverflow.com/questions/359424/detach-subdirectory-into-separate-git-repository) içine birden fazla dizin koymak için çalışırken uymuyor.

CEVAP
11 EKİM 2010, PAZARTESİ


Bu Kur MyABRepo; My12Repo tabii ki aynı şekilde yapabilirsiniz.

git clone MyHugeRepo/ MyABRepo.tmp/
cd MyABRepo.tmp
git filter-branch --prune-empty --index-filter 'git rm --cached --ignore-unmatch DIR_1/* DIR_2/*' HEAD 

Bir başvuru için .git/referans/orijinal/referans//ana kalır kafaları. Bunu kaldırmak mümkün değildir.

cd ..
git clone MyABRepo.tmp MyABRepo

Eğer her şey iyi giderse o zaman MyABRepo kaldırabilirsiniz.tmp.


Eğer bir sebepten dolayı bir hata ile ilgili .git-yeniden yazmak, bu deneyebilirsiniz:

git clone MyHugeRepo/ MyABRepo.tmp/
cd MyABRepo.tmp
git filter-branch -d /tmp/git-rewrite.tmp --prune-empty --index-filter 'git rm --cached --ignore-unmatch DIR_1/* DIR_2/*' HEAD 
cd ..
git clone MyABRepo.tmp MyABRepo

Bu ve /tmp/git-yeniden oluşturmak için kullanacaktır.geçici dizin olarak tmp, .git-rewriteyerine. Doğal olarak, /tmp/git-rewrite.tmp, yazma izniniz olmadığı sürece yerine istediğiniz herhangi bir yolu değiştirin ve dizin zaten var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GenTechPC

    GenTechPC

    1 Temmuz 2007
  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010
  • JeezyVEVO

    JeezyVEVO

    12 Mayıs 2009