SORU
31 AĞUSTOS 2008, Pazar


Nasıl hepsini birlikte yedeklenir, böylece birden fazla gıt depoları organize musunuz?

SVN ile bir sunucuda tutulur ve teslim birkaç makine üzerinde tek büyük bir depo vardı. Bu oldukça iyi bir yedekleme sistemi ve kolay bana makineler üzerinde çalışmak yasak. Belirli bir proje ödeme ve güncellenen 'usta' projesi, ya da yapabileceğim tüm şey alma. bende

Şimdi, git depoları bir grup, birkaç github üzerinde çeşitli projeler için var. Ben de SVN deposu ben, git-svn komut.. ile bahsedilen ithal

Temelde, benim gibi olan bütün kodları (sadece proje ama rasgele parçacıkları ve komut dosyaları, bazı şeyler benim CV, makaleler yazdım, web siteleri yaptım ve büyük bir depo elimden kolayca klon üzerine uzaktan makineleri, ya da bellek sopa/diskler yedekleme.

Sorun, o zaman bir özel havuz ve git izin vermez kontrol belirli bir klasör (ben itmek için github gibi ayrı bir proje, ama değişiklikler görünür hem de ana-repo ve alt repo)

Benolabilirkullanımı git submodule sistem, ama olmuyor nasıl hareket istiyorum ben de (alt modüller vardır işaretçiler diğer depoları, ve gerçekten de içeren gerçek bir kod, yani işe yaramaz yedek)

Şu anda gıt-repo bir klasör var (örneğin, ~/code_projects/proj1/.git/ ~/code_projects/proj2/.git/), ve sonra değişiklikleri yapmak için proj1 ben git push github o zaman ben kopya dosyalarına ~/Belgeler/kod/python/projeler/proj1/ ve bunu bir tek tamamlama (yerine çok sayıda olanlar bireysel repo). O zaman yap git push backupdrive1, git push mymemorystick vb

Yani, soru şu: Nasıl git depoları ile kişisel kod ve projeleri yapmak ve onları senkronize tutmak ve yedekleme?

CEVAP
31 AĞUSTOS 2008, Pazar


İstiyorumgüçlüverilen ilişkili olmayan verilerin koyarak karşı tavsiye Git deposu. Yeni depolar oluşturma yükünü oldukça düşük, ve birözelliğibunu mümkün hale getiriyor farklı soylar tamamen ayrı.

Bu fikri mücadele gereksiz yere karışık tarihi ile biten anlamına gelir hangi yönetim daha zor ve daha fazla işler önemlisi..."" sonuç nedeniyle araçlar daha az yararlı Arkeoloji seyreltme. Sizin de bahsettiğiniz gibi, ayrıca, Gıt "birim varsayar klonlama" Depo ve pratik ... çünkü çok ilgisi var dağıtılmış doğası.

Tek çözüm, her proje/paket/etc tutmaktır. kendi gibiçıplak depo (ağaç çalışma olmadan, yani, kutsal bir hiyerarşi altında, gibi:

/repos/a.git
/repos/b.git
/repos/c.git

Kısa özeti kurulmuş bir kez, önemsiz olur idari işlemler (yedekleme, ambalaj, web yayını) için geçerli bir rol değil, tamamen farklı bir hizmet veren tam bir hiyerarşi, "monolithic" SVN depoları. Çalışma bu havuzları ile de SVN iş akışları, ek olarak biraz benzer olur olabilirkullanım yerel tamamlar ve dalları:

svn checkout   --> git clone
svn update     --> git pull
svn commit     --> git push

Kolaylığı için her çalışma klon birden fazla uzaktan kumanda alabilirsin birden fazla taraflar arasındaki senkronizasyon:

$ cd ~/dev
$ git clone /repos/foo.git       # or the one from github, ...
$ cd foo
$ git remote add github ...
$ git remote add memorystick ...

Sonra/", çalışmak ve işlemek" kaynaklar her birinden Çek çekebilirsiniz yerel olarak, ve sonra ("") yedekleme zaman bu uzaktan kumanda her bas (iter nasıl not gibi bir şey ile hazır ^em>aynıtaahhüt ve Tarih uzaktan kumanda her!):

$ for remote in origin github memorystick; do git push $remote; done

Açmak için en kolay yolu, mevcut bir çalışma depo ~/dev/foo böyle çıplak bir depo içine alır muhtemelen

$ cd ~/dev
$ git clone --bare foo /repos/foo.git
$ mv foo foo.old
$ git clone /repos/foo.git

çoğunlukla svn import--eşdeğerdir ama atmak yok mevcut, "" tarih uzak. yerel

Not:alt modüllereklemek için bir mekanizma paylaşılırilgili soy, ben gerçekten onları uygun bir araç düşünmez yani sorunu çözmek için çalışıyoruz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • laptopmag

    laptopmag

    25 Ocak 2008
  • LIVESTRONG.COM

    LIVESTRONG.C

    5 EKİM 2005