SORU
19 Mart 2010, Cuma


Birleştirme: Hg/Git vs SVN

Ben sık sık okumak Hg (ve Git ve...) daha iyi birleştirme daha SVN ama hiç görmedim pratik örnekler nerede Hg/Git birleştirme bir şey nerede SVN başarısız (veya nerede SVN gerekiyor el ile müdahale). Şube adım adım birkaç listeleri post//...-Hg işlemleri SVN/Git mutlu üzerinde hareket ederken başarısız olacak bu haritayı tamamlama/değiştirme misiniz? Pratik, çok istisnai durumlarda lütfen

Bazı arka plan: biz birkaç düzine geliştiriciler projeleri SVN kullanma ile ilgili çalışma var, her bir proje (ya da benzer projeler grup) kendi depo ile. Nasıl bildiğimizi için geçerlidir - ve özellik-dal değil koşuya sorunları çok sık (yani, oraya gittik, ama öğrendiğimiz için aşmak Joel's problems "bir programcı neden travma için tüm ekip" ya da "ihtiyacı altı geliştiriciler için iki hafta için yeniden entegre bir şube"). Çok kararlı ve sadece hata düzeltmeleri uygulamak için kullanılan serbest şubeleri var. Bir hafta içinde bir yayın oluşturmak için yeterince istikrarlı olması gerektiğini gövdeleri var. Ve geliştiriciler geliştiriciler tek veya gruplar üzerinde çalışabilir özelliği şubeleri var. Evet, depoyu kadar karmakarışık olmaması için yeniden entegrasyon sonra silinir. ;)

Hala Hg/avantajları SVN üzerinden Gıt bulmaya çalışıyorum. Almayı çok istiyorum bazı eller deneyim, ama orada değil daha büyük projeler yapabiliriz taşımak için Hg/Git henüz, çok sıkıştım ile oynayan küçük yapay projeleri tek içeren birkaç dosya. Ve şimdiye kadar onlar hakkında okudum ama kendim bulmak için başarısız beri Hg/güç etkileyici Gıt hissediyorum birkaç kasa arıyorum.

CEVAP
21 Mart 2010, Pazar


Ben de, diyelim ki, yeni bir şube birleştirme ve Mercurial için başarısız olduğu bir dava için seyir olmuştur (ve Git, Çarşı, ...) doğru olanı yapar.

SVN Kitabı 10**. Bu baskılar1.5, 1.6, 1.7, 1.8 için geçerlidir! Bu durum altında yeniden denedim:

cd /tmp
rm -rf svn-repo svn-checkout
svnadmin create svn-repo
svn checkout file:///tmp/svn-repo svn-checkout
cd svn-checkout
mkdir trunk branches
echo 'Goodbye, World!' > trunk/hello.txt
svn add trunk branches
svn commit -m 'Initial import.'
svn copy '^/trunk' '^/branches/rename' -m 'Create branch.'
svn switch '^/trunk' .
echo 'Hello, World!' > hello.txt
svn commit -m 'Update on trunk.'
svn switch '^/branches/rename' .
svn rename hello.txt hello.en.txt
svn commit -m 'Rename on branch.'
svn switch '^/trunk' .
svn merge --reintegrate '^/branches/rename'

Kitaba göre, birleştirme temiz bir şekilde bitirmek gerekir, ama yanlış trunk güncellemeden sonra yeniden adlandırılan dosya veri unutulur. Bunun yerine bir ağaç çatışma (bu 1.6.17, yazma zamanda Debian yeni sürüm Subversion ile):

--- Merging differences between repository URLs into '.':
A    hello.en.txt
   C hello.txt
Summary of conflicts:
  Tree conflicts: 1

Herhangi bir çatışma hiç olmamalı — güncelleme dosyasının yeni adını birleştirilecek. Subversion başarısız olsa da, Mercurial doğru bu işler:

rm -rf /tmp/hg-repo
hg init /tmp/hg-repo
cd /tmp/hg-repo
echo 'Goodbye, World!' > hello.txt
hg add hello.txt
hg commit -m 'Initial import.'
echo 'Hello, World!' > hello.txt
hg commit -m 'Update.'
hg update 0
hg rename hello.txt hello.en.txt
hg commit -m 'Rename.'
hg merge

Birleştirme önce, depoyu bu gibi görünüyor (hg glog):

@  changeset:   2:6502899164cc
|  tag:         tip
|  parent:      0:d08bcebadd9e
|  user:        Martin Geisler 
|  date:        Thu Apr 01 12:29:19 2010  0200
|  summary:     Rename.
|
| o  changeset:   1:9d06fa155634
|/   user:        Martin Geisler 
|    date:        Thu Apr 01 12:29:18 2010  0200
|    summary:     Update.
|
o  changeset:   0:d08bcebadd9e
   user:        Martin Geisler 
   date:        Thu Apr 01 12:29:18 2010  0200
   summary:     Initial import.

Birleştirme çıktı

merging hello.en.txt and hello.txt to hello.en.txt
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)

Diğer bir deyişle: Mercurial revizyon 1-değişiklik aldı ve Gözden Geçirme 2 Yeni Dosya adı (hello.en.txt) içine birleştirilmiş. Bu dava yeniden düzenleme ve yeniden düzenleme desteklemek için elbette çok önemlidirtam olarakböyle şeyleri sen bir dala yapmak istiyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • MrMimoB

    MrMimoB

    11 NİSAN 2011
  • The Computer Chronicles

    The Computer

    7 Kasım 2012