Geçtiğimiz günlerde SVN'den Mercurial'e geçtim. Şimdi, diğer geliştiricilerin depoda ne olduğunu anlamalarını umarak, iyi uygulamalara göre Mercurial'da amaçlanan dallanma iş akışımı nasıl gerçekleştireceğimi merak ediyorum. Serbest bırakma dallarını Mercurial'da yönetme
- Genellikle Mevcut yayın serisinde işin gerçekleştirildiği bir gövde/varsayılan dalı vardır:
Bu
iş akışıdır. Diyelim ki bu 1.x. Aynı zamanda bir sonraki büyük sürüm üzerinde çalışmak için bir şube 2.x kullanıyorum. Bu daldaki değişiklikler radikal olabilir, bu nedenle gövde/varsayılan/1.x dalı ile birleşmek burada bir anlam ifade etmemektedir.- Bir süre çalıştıktan sonra 2.x bitmiş olabilir ve sürüm 2.0 serbest bırakılabilir. Şimdi 2.x şubesinin yeni varsayılan/trunk şubesi olmasını ve mevcut varsayılan/trunk'un 1.x şubesi olmasını istiyorum.
- Bu işlemi tekrarlayarak yeni bir 3.x dalı olabilir. Daha önce olduğu gibi, 3.0 serbest bırakılırsa, 3.x yeni varsayılan şube olurken, o anda geçerli varsayılan değer 2.x dalı olacaktır (tekrar).
Sorum bu iş akışı iyi bir (Ben temelde yanlış değil sanırım) olup olmadığı değil olduğunu. Benim sorularım, bunu Mercurial'da fark ettiğim yolun iyi bir uygulama olarak mı yoksa daha iyi fırsatlar mı olduğu şeklinde yorumlanabilir.
$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"
: Yani burada
ben ...
Mevcut yayın serisi 1.x kodunu tutan tek bir dalı olan bir depodan başlayarak Mercurial şube yönetmek için plan nasıl salma 2.x üzerinde çalışmaya başlayın:
arada$ hg branch 2.x
$ hg ci -m "Create new branch for 2.x development"
$ echo "Big new feature for 2.x" > file2.txt
$ hg ci -A -m "Add big new feature"
, güncel sürüm serisinin bazı işler yapmak (1.x):
$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"
Bir süre sonra 2.0 sürümü hazır, yippee! varsayılan şube varsayılan için 2.x 1.xve olun:
$ hg up default
$ hg branch 1.x
$ hg ci -m "Make default branch to 1.x branch"
$ hg up 2.x
$ hg ci --close-branch -m "Close branch 2.x"
$ hg branch --force default
$ hg ci -m "Make former 2.x branch to new default"
Şimdi yeni bir şube 3.x ve içindeki çalışma oluşturmak, ayrıca varsayılan üzerinde çalışmak . Bir süre 3,0 hazırdır ve sonrasında Yine, zaman şube isimlerini yönetmek için tekrar var:
$ hg up default
$ hg branch --force 2.x # (reuse previously closed 2.x branch name)
$ hg ci -m "Make default branch to 2.x branch"
$ hg up 3.x
$ hg ci --close-branch -m "Close branch 3.x"
$ hg branch --force default
$ hg ci -m "Make former 3.x branch to new default"
şimdi repo gibi görünebilir (kafaları 'o'):
o Branch default (3.x)
|
| o Branch 2.x
\|
| o Branch 1.x
\|
|
.
ana nokta şube adlarını yeniden kullanıp varsayılan numaralı şubeyle hokkabazlık yapmak iyi bir uygulamadır.
Bu soru için bir çok metin - üzgünüm - ama ne yaptığım konusunda net olmak istedim.
[Mercurial wiki] (http://www.mercurial-scm.org/wiki/StandardBranching) bu konu hakkında iyi bir tanıtım sağlar. – xyres