2010-04-25 22 views
19

Bir hg projesinde bazı deneysel çalışmalar yapmak istiyorum. Bu yüzden şube oluşturmak, ona bağlı kalmak istiyorum. Ve eğer deney çalışırsa, onu ana şubeye birleştirebilirim.HG'de nasıl bir şube geliştirilir?

GIT'de, ben A Guide to Branching in Mercurial okudum

$ git branch experimental 
$ git checkout experimental 
(edit file) 
$ git commit -a 
$ git checkout master 

yapabilirsiniz. hg branch feature dedi. Peki sırada ne var? Takip etmiyorum.

cevap

24
$ hg branch experimental 

(edit file) 
$ hg commit 
$ hg update default 
+0

'Şube dalında deney yapmadan önce' varsayılan 'yaptığım tüm değişiklikleri taahhüt etmem gerekir mi? – michael

+1

Evet - Bekleyen değişikliklerin varsayılan dalda olmasını istediğinizi varsayarsınız. Aksi takdirde, beklemede olan değişiklikler sizi "deneysel" olarak adlandırdığınız şubeye yönlendirir ve siz de bunları orada gerçekleştirebilirsiniz. – sblom

+0

, "Burada tekrar varsayılan olarak güncellendikten sonra" hg birleştirme deneyine "ihtiyaç duyacağınıza inanıyorum. – jacobbaer

8

Büyük bir özellik değilse (yani, bir şubenin sahip olması gerekmiyorsa), oldukça basittir.

Deponuzun X değiştirgesinde olduğunu varsayalım. Özelliğin üzerinde istediğiniz kadar çalışıp, taahhütte bulunun, taahhütte bulunun, işlem yapın ve sonuçtan memnunsanız, tümüyle işe yarayacağını biliyormuş gibi devam edin. ;) Mutlu değilseniz, hg update X yapın ve oradan geliştirmeye devam edin. Denemenizde yaptığınız tüm işler anonim bir şube olacak.

Bu garip bir şekilde, appears, Git'in size kafa karıştırıcı olabilecekleri anonim dallarla çalışması için bir yol sağlamayacağı anlamına gelir.

+1

Ayrıca, Mercurial dokümantasyon, özellikle hg wiki'de, bu alanda biraz belirsiz ve potansiyel olarak kafa karıştırıcı. “İsimsiz şubeler” dediğiniz şey, Mercurial'ın “kafa” dediği durumlardır. Bir "kafa" çocuksuz bir değişikliktir. Bir değişiklik kümesi her zaman bir ve sadece bir tane dalına aittir; Bu varsayılan adı, varsayılan adı olabilir. Adlandırılmış bir dal her zaman en az bir "kafa" içerir, ancak daha fazla olabilir. Bir "hg update X" ve bir taahhüt yaparak, X'in ait olduğu adlandırılmış dalda yeni bir kafa yaratırsınız, fakat baş hg'nin "branch" anlamda bir dalı değildir. –

+1

Doğru olmadığınızdan emin değilim: Mercurial, şubelerin yaprak revizyonlarını "yönlendirir" ve açıkça adlandırılmayan "anonim şubeler" dallarını çağırır. Bir "adlandırılmış şube", genellikle bir dizi anonim şubeden oluşması gerçeği, herkesin kolayca anlamasına yardımcı olmaz, ama işte bu şekilde çalışır ... –

+1

Geçerli 'hg' man sayfası, kesin olana en yakın şeydir Konuyla ilgili kelime ve "anonim şube" teriminin hg kaynağında kullanıldığı tek yer burası.Man sayfa sözlüğü "şube başı", "depo başı" ve "topolojik kafa" terimleri ile "isim verilmiş şube" ve "topolojik şube" vs "topolojik şube" arasında ayrım yapmaya çalışır. Terimlerin aşırı yüklenmesi nedeniyle kesin bir şekilde açıklamak zor ve kafa karıştırıcı olabilir. Neyse ki çoğu zaman önemli değil. –

20

İlk önce git branch'un numaralı hg branch numaralı telefondan olduğunu unutmayın. hg branch ile oluşturulan şubeler kalıcıdır ve küresel bir isim alanında yaşarken, git branch ile yapılan şubeler geçicidir. En yakın git branch karşılığı hg bookmark: yer imleri yeniden adlandırılabilir ve silinebilir ve Git-dalları gibi davranabilir.

Kısa bir süre önce bir guide for Mercurial bookmarks yazdım. Bunu named branch guide ile karşılaştırın. Her iki kılavuz da gelişimin izini sürdürebilmek için Mercurial'daki şubeleri nasıl kullanacaklarına dair örnekler içermektedir. Bu, dalların nasıl birleştirileceğini ve işiniz bittiğinde nasıl kapatılacağını veya yer iminin silineceğini gösterir.

+0

Adlandırılmış şubelerin bilincinde olmakla birlikte (Tomislav'un ​​işaret ettiği gibi), aynı zamanda da adlandırılmış dallar için yararlı bir yürüyüş. –

+1

+1 @MartinGeisler. Şuben iyi geçiyor. – klabranche

+0

-1: Bağlantı bozuk, düzeltirseniz bu gönderiyi +1'leyeceğim. –