SORU
10 EYLÜL 2009, PERŞEMBE


Yönetme yayın Mercurial şubeleri

Son zamanlarda Mercurial için SVN den değiştirdim. Şimdi iyi bir uygulama, diğer geliştiriciler deposunda neler olduğunu anlamak umuduyla göre Mercurial amaçlanan dallanma benim iş akışını gerçekleştirmek için nasıl merak ediyorum.

Bu iş akışı

  1. Genellikle geçerli sürüm serisi ile işin gerçekleştirildiği trunk/varsayılan bir şube var. Hadi 1 olduğunu söylüyorlar.x. Aynı zamanda bir şube 2 kullanıyorum.x bir sonraki büyük sürüm üzerinde çalışmak için. Bu dalda radikal değişiklikler, varsayılan/trunk/1 ile birleştirilmesi olabilir.x şube manası burada yapar.
    • 2-bir süre işten sonra.x bitmiş olabilir ve 2.0 sürümü yayınlanacak. Şimdi 2 istiyorum.x yeni varsayılan olmasını şube trunk/dal ve geçerli varsayılan gövde 1/.x şube.
    • Bu işlemi tekrarlayarak, yeni bir 3 gelebilir.x şube. Daha önce olduğu gibi, Eğer 3.0 piyasaya çıkarsa, 3.x sonra geçerli varsayılan 2 olmak gerekirken yeni varsayılan Dalı haline gelmelidir.x şube (tekrar).

Benim sorumdeğilyoksa, bu iş akışını iyi bir (temelde yanlış değil sanırım). Sorularıma Mercurial bu fark da iyi bir yöntem olarak görülebilir olup olmadığını ya da daha iyi fırsatlar varsa.

Burada Mercurial şubeleri yönetmek için plan nasıl yani...

Geçerli Sürüm 1 Serisi ve kodu tutan tek bir şube ile bir depodan başlayarak.x:

$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"

Sürüm 2 üzerinde çalışmaya başlayacağız.x:

$ 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"

Bu arada, bazı geçerli serbest çalışma serisi (1.x):

$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"

Biraz zaman sürüm 2.0 hazır olduktan sonra, Yaşasın! Olunvarsayılanşube1.xve2.xiçinvarsayılan:

$ 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 oluşturmak3.xve iş de işvarsayılan. Yine, bir süre sonra 3.0 hazır olduğunu ve tekrar şube adları yönetmek için

$ 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"

Repo şimdi şöyle ('o' heads)

o Branch default (3.x)
|
| o Branch 2.x
 \|
  | o Branch 1.x
   \|
    |
    .

Emin değilim ana noktasıyenidenşube adı şube adları ve hokkabazlıkvarsayılaniyi bir uygulamadır.

Bu soru için metin çok - üzgünüm - ama benim ne yaptığımı açıklamak istedim.

CEVAP
10 EYLÜL 2009, PERŞEMBE


Yapacağım şey şu:

default "" şube. ana hat olun Bu dalın ucu "şu anda" sürüm kodu. halka yayınlandı Kritik hata düzeltmeleri doğrudan bu şube için kararlı ve geliştirme şube birleştirilecek.

Sürüm 2.0 2.0-dev bir şube üzerinde çalışmaya başlamak için. Bu şube için 2.0 için değişiklikler, ve hatta kritik hata düzeltmeleri (default) birleştirme. 2.0, default 2.0-dev birleştirme 2.0 sonuç olarak etiketi ile işiniz bittiğinde.

İşleri böyle yapıyor şube adları hokkabazlık hakkında endişelenmenize gerek yok anlamına gelir, ve geliştirme dallarında hat kritik hata düzeltmeleri oldukça kolay bir şekilde birleştirebilirsiniz.

Ayrıca birden fazla gelecek sürümleri aynı anda üzerinde çalıştığın zaman (mesela 2.1 ve 3.0) ölçekler. Periyodik olarak 3.0 2.1 3.0 değişiklikleri güncel tutmak için birleştirebilirsiniz.

Böyle bir grafik ile bitireceğiz:

$ hg glog -l 1000
@       changeset:  25:efc0096f47c0  tip
|       summary:    Added tag 3.0 for changeset d1a7fc3d7d77
|
o       changeset:  24:d1a7fc3d7d77  3.0
|\      summary:    Merge in the redesign changes.
| |
| o     changeset:  23:b5b69d24c8f7 3.0-dev
| |     summary:    Finish 3.0 redesign.
| |
| o     changeset:  22:4c2f98fac54b 3.0-dev
|/|     summary:    Merge in the latest changes to 2.1/mainline.
| |
o |     changeset:  21:37df04521032
| |     summary:    Added tag 2.1 for changeset 39ecc520fc0a
| |
o |     changeset:  20:39ecc520fc0a  2.1
|\ \    summary:    2.1 development is done.
| | |
| o |   changeset:  19:208f3f9236af 2.1-dev
| | |   summary:    Finish the 2.1 work.
| | |
| | o   changeset:  18:4a024009a9d6 3.0-dev
| | |   summary:    More redesign work.
| | |
| | o   changeset:  17:00c416888c25 3.0-dev
| |/|   summary:    Merge in changes from the 2.1 branch to keep the redesign current.
| | |
| o |   changeset:  16:a57e781a0db1 2.1-dev
| | |   summary:    More 2.1 work.
| | |
| | o   changeset:  15:ddeb65402a61 3.0-dev
| | |   summary:    More redesign work.
| | |
 ---o   changeset:  14:90f5d7a8af9a 3.0-dev
| | |   summary:    Merge in the fire fixes.
| | |
| o |   changeset:  13:78a949b67bb9 2.1-dev
|/| |   summary:    Merge in the fire fixes.
| | |
o | |   changeset:  12:6dfe9d856202
| | |   summary:    Oh no everything is on fire, fix it in the mainline.
| | |
| o |   changeset:  11:86767671dcdb 2.1-dev
| | |   summary:    Smaller changes for 2.1.
| | |
| | o   changeset:  10:25dec81d2546 3.0-dev
| | |   summary:    Work more on the redesign.
| | |
 ---o   changeset:  9:42c7d689fb24 3.0-dev
| |     summary:    Start working on a complete redesign.
| |
| o     changeset:  8:3da99186ca7d 2.1-dev
|/      summary:    Start working on 2.1.
|
o       changeset:  7:9ba79361827d
|       summary:    Added tag 2.0 for changeset 755ed5c5e291
|
o       changeset:  6:755ed5c5e291  2.0
|\      summary:    Merge in the dev branch for 2.0.
| |
| o     changeset:  5:44a833fcc838 2.0-dev
| |     summary:    Finish work on 2.0.
| |
| o     changeset:  4:d7ba6aae1651 2.0-dev
|/|     summary:    Merge in the critical fix.
| |
o |     changeset:  3:968049f1b33a
| |     summary:    Fix a critical bug on the main branch.
| |
| o     changeset:  2:917869609b25 2.0-dev
| |     summary:    More work on the new version.
| |
| o     changeset:  1:f95798b9cb2e 2.0-dev
|/      summary:    Start working on version 2.0.
|
o       changeset:  0:8a3fb044d3f4
        summary:    Initial commit.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • Professor Messer

    Professor Me

    27 NİSAN 2007
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011