En büyük fark, şube adlarının tarihe nasıl kaydedildiğidir. Adlı dalları ile şube adı olan gömülü her Değişiklik listesi ve böylece tarihin değişmez bir parçası haline gelecektir. Klonlarla, belirli bir değişiklik setinin nereden geldiğine dair kalıcı bir kayıt olmayacaktır .
Bu, klonların bir dal adını kaydetmek istemediğiniz hızlı deneyler için harika olduğu ve adlandırılmış dalların uzun vadeli dallar için iyi olduğu anlamına gelir ("1.x", "2.x" ve benzeri).
Ayrıca, Mercurial'de tek bir deponun birden çok hafif dalı kolayca barındırabileceğini unutmayın. Bu tür arşiv içi şubeler, kolayca tekrar bulabilmeniz için yer imlerine eklenebilir. Diyelim ki şirket deposunu şöyle göründüğünde klonladınız:
[a] --- [b]
Kesiyorsunuz ve yapıyorsunuz [x]
ve [y]
:
[a] --- [b] --- [x] --- [y]
Ortalama birisi koyar iken [c]
ve [d]
depoya, bu nedenle çektiğinde böyle bir geçmişi grafiği olsun:
[x] --- [y]
/
[a] --- [b] --- [c] --- [d]
Burada tek bir depoda iki başlık var. Çalışan kopyanız her zaman tek bir değişiklik setini yansıtır, sözde çalışma kopyası ana değişiklik seti. Bunu şununla kontrol edin:
% hg parents
Diyelim ki raporlar [y]
. Kafaları görebilirsin
% hg heads
ve bu rapor edecek [y]
ve [d]
. Deponuzu temiz bir kullanıma güncellemek istiyorsanız [d]
, yapmanız gereken ( [d]
revizyon numarası ile değiştirin [d]
):
% hg update --clean [d]
Daha sonra o hg parents
raporu göreceksiniz [d]
. Bu, sonraki taahhüdünüzün [d]
ebeveyn olarak olacağı anlamına gelir . Böylece, ana dalda fark ettiğiniz bir hatayı düzeltebilir ve değişiklik kümesi oluşturabilirsiniz [e]
:
[x] --- [y]
/
[a] - [b] - [c] - [d] - [e]
[e]
Yalnızca değişiklik kümesini göndermek için yapmanız gereken
% hg push -r [e]
[e]
değişiklik kümesi karması nerede . Varsayılan olarak hg push
basitçe depoları karşılaştırmak ve göreceksiniz [x]
, [y]
ve [e]
eksik, ancak paylaşımına istemeyebilirsiniz [x]
ve [y]
henüz.
Hata düzeltmesi sizi de etkiliyorsa, bunu özellik dalınızla birleştirmek istersiniz:
% hg update [y]
% hg merge
Bu, depo grafiğinizi şöyle bırakacaktır:
[x] --- [y] ----------- [z]
/ /
[a] - [b] - [c] - [d] - [e]
ve [z]
arasındaki birleştirme nerede . Ayrıca dalı atmayı da tercih edebilirdin:[y]
[e]
% hg strip [x]
Bu hikayedeki ana noktam şudur: Tek bir klon, birçok geliştirme yolunu kolayca temsil edebilir. Bu, herhangi bir uzantı kullanmadan "düz hg" için her zaman doğru olmuştur. İmleri uzatma olsa harika bir yardımcı. Değişiklik ayarlarına isimler (yer imleri) atamanıza izin verecektir. Yukarıdaki durumda, geliştirme başlığınızda ve yukarı akış başında bir yer imi isteyeceksiniz. Mercurial 1.6 ile yer imleri itilip çekilebilir ve Mercurial 1.8'de yerleşik bir özellik haline gelmiştir.
İki klon yapmayı seçmiş olsaydınız, geliştirme klonunuz yaptıktan sonra şöyle görünürdü [x]
ve [y]
:
[a] --- [b] --- [x] --- [y]
Ve yukarı akış klonunuz şunları içerecektir:
[a] --- [b] --- [c] --- [d]
Şimdi hatayı fark edersiniz ve düzeltirsiniz. hg update
Yukarı akış klonu kullanıma hazır olduğundan burada zorunda değilsiniz . Taahhüt edersiniz ve yaratırsınız [e]
:
[a] --- [b] --- [c] --- [d] --- [e]
Hata düzeltmeyi geliştirme klonunuza dahil etmek için oraya çekin:
[a] --- [b] --- [x] --- [y]
\
[c] --- [d] --- [e]
ve birleştir:
[a] - [b] - [x] - [y] - [z]
\ /
[c] --- [d] --- [e]
Grafik farklı görünebilir, ancak aynı yapıya sahiptir ve sonuç aynıdır. Klonları kullanarak biraz daha az zihinsel defter tutma yapmanız gerekiyordu.
Adlandırılmış dallar, oldukça isteğe bağlı oldukları için burada gerçekten resmin içine girmedi. Mercurial, adlandırılmış dalları kullanmaya geçmeden önce yıllarca iki klon kullanılarak geliştirildi. 'Varsayılan' şubeye ek olarak 'kararlı' adlı bir şubeyi sürdürüyoruz ve sürümlerimizi 'kararlı' şubeye göre yapıyoruz. Önerilen iş akışının açıklaması için wikideki standart dallanma sayfasına bakın .