SORU
20 Mayıs 2009, ÇARŞAMBA


Mercurial: Dalları vs Birden çok Depoları Adlı

Şu anda nispeten büyük bir kod temeli üzerinde subversion kullanıyoruz. Her sürüm kendi şube alır ve düzeltmeler gövde karşı gerçekleştirilen ve yayım şube svnmerge.py kullanarak içine geçirilir

O zaman daha iyi kaynak kontrol geçmek için geldiğini düşünüyorum, ve bir süre Mercurial ile oynuyor oldum.

Böyle serbest bir yapısı Mercurial kullanarak yönetme hakkında olsa da iki okul var. Ya da her yayın kendi repo yayım şube karşı yapılan alır ve ana dal (ve diğer herhangi bir yeni sürümü dalları.) itti YA da kullanarak tek bir depo (veya birden fazla eşleşen kopyalar.) içinde şube adlı

Her iki durumda da organ nakli gibi bir şey serbest dallarında eklenmesi için değişiklik cherrypick kullanarak olabilir gibi görünüyor.

Sen; her yaklaşım göreli yararları nelerdir, sorabilir miyim?

CEVAP
21 Mayıs 2009, PERŞEMBE


En büyük fark şube adları tarihe kadar. Dalları adlı şube adıgömülüher değişiklik kümesi ve böylece tarihin değişmez bir parçası haline geldi. Klonlar olacakhayır kalıcıbelirli bir değişiklik kümesi nereden geldiğini rekor.

Bu klonlar hızlı deneyler şube adı kayıt etmek istemiyorum, ve dallar adlı uzun vadeli dalları ("1.iyi için büyük olduğu anlamına gelir", "2.x x" ve benzeri).

Tek bir depo içinde kolayca Mercurial hafif birden fazla Şubesi ağırlayacak unutmayın. –Depo dalları böyle kolayca onları tekrar bulabilmek için yer imlerine eklenmiş olabilir. Diyelim ki böyle bakınca şirket depoyu klonlanmış olduğunu söylüyor:

[a] --- [b]

Seni hack ve [x] [y] olun:

[a] --- [b] --- [x] --- [y]

Birisi deposuna [c] [d] koyuyor, o yüzden böyle grafik: bir geçmiş olsun çektiğinizde

            [x] --- [y]
           /
[a] --- [b] --- [c] --- [d]

Burada tek bir depo içinde iki kafası vardır. Çalışma kopyası, her zaman tek bir değişiklik, sözde çalışma kopyası ebeveyn değişiklik kümesini yansıtır. Bu ile kontrol edin

% hg parents

Hadi [y] raporlar söylüyorlar. İle kafaları görebilirsiniz

% hg heads

ve bu [y] [d] rapor verecek. Eğer [d], temiz bir çıkış için depoyu güncellemek istiyorsanız o zaman sadece ([d] Revizyon numarası [d] yedek):

% hg update --clean [d]

Sonra hg parents [d] rapor göreceksiniz. Bu sizin bir sonraki commit 34 ** ebeveyn olarak kullanılacaktır. Böylece ana dal içinde fark ettiğiniz bir hata düzeltme ve değişiklik yaratmak [e]:

            [x] --- [y]
           /
[a] --- [b] --- [c] --- [d] --- [e]

Değişiklik [e] sadece itmek için, yapmanız gereken

% hg push -r [e]

[e] nerede değişiklik karma. Varsayılan olarak hg push kolayca karşılaştırın depoları ve görmek [x], [y] [e] eksik, ama olmayabilir paylaşalım [x] [y] henüz.

Eğer hata düzeltme de etkiler, özellik şubesi ile birleştirmek istediğiniz:

% hg update [y]
% hg merge

Bu depo grafiğiniz bu halde bırakacak:

            [x] --- [y] ----------- [z]
           /                       /
[a] --- [b] --- [c] --- [d] --- [e]

[z] olduğu [y] [e] arasında birleştirme. Ayrıca şube atmayı tercih etmiş olabilir:

% hg strip [x]

Bu hikayenin ana noktası butek bir klon kolayca geliştirme birkaç parça temsil edebilir. Bu her zaman "hg" tüm uzantıları kullanmadan. düz için gerçek oldu bookmarks extension büyük bir yardım. İsim (yer imleri) değişiklik atamak için izin verir. Yukarıdaki durumda kalkınma kafanı ve yukarı kafasında bir yer imi isteyebilirsiniz. Yer imleri olabiliritti ve çekti1.6 Mercurial ve Mercurial 1,8 yerleşik bir özellik haline gelmiştir.

Eğer iki klon yapmayı tercih etmiş olsaydı, geliştirme klon [x] ve [y] yaptıktan sonra bu gibi görünebilirdi:

[a] --- [b] --- [x] --- [y]

Ve yukarı senin klon içerir:

[a] --- [b] --- [c] --- [d]

Şimdi hata bildirimi ve Düzelt. Burada memba klon kullanıma hazır olduğundan 54* *gerek yok. Ve [e] taahhüt oluşturun:

[a] --- [b] --- [c] --- [d] --- [e]

Geliştirme, hata düzeltme vardır orada sen Çek klon:

[a] --- [b] --- [x] --- [y]
           \
            [c] --- [d] --- [e]

ve birleştirme:

[a] --- [b] --- [x] --- [y] --- [z]
           \                   /
            [c] --- [d] --- [e]

Grafik belki farklı görünüyor, ama aynı yapıya ve sonuç aynı sonunda. Klonlar kullanarak daha az zihinsel bir muhasebe yapmak zorunda.

Dalları adlı oldukça isteğe bağlı oldukları için resme buraya gelmedi. Mercurial dalları adlı kullanarak değiştirdik yıl önce bir iki klon kullanarak kendini geliştirdi. Bir şube 'kararlı' 'varsayılan' şube ve yayımları 'istikrarlı' şube. dayalı ek olarak adlandırılan koruyoruz Önerilen iş akışı tanımı için wiki standard branching sayfasına bakın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • Major FX

    Major FX

    6 HAZİRAN 2012
  • UKF

    UKF

    2 Aralık 2009