SORU
20 NİSAN 2010, Salı


'in git rebase gibi bir rebase Nasıl Hg:

Gıt bunu yapabilirim:

1. Start working on new feature:
$ git co -b newfeature-123  # (a local feature development branch)
do a few commits (M, N, O)

master A---B---C
                \
newfeature-123   M---N---O

2. Pull new changes from upstream master:
$ git pull
(master updated with ff-commits)

master A---B---C---D---E---F
                \
newfeature-123   M---N---O

3. Rebase off master so that my new feature 
can be developed against the latest upstream changes:
(from newfeature-123)
$ git rebase master

master A---B---C---D---E---F
                            \
newfeature-123               M---N---O

< / ^ br .

Mercurial aynı şeyi yapmak için nasıl bilmek istiyorum, ve bir cevap için web dolaştılar ettik, ama daha iyisini bulamadım: git rebase - can hg do that

Bu link 2 örnek sağlar:< / ^ br . 1. Bu kabul ediyorum: (benim örnek bu örnekte düzenlemeler yerine)

hg up -C F  
hg branch -f newfeature-123  
hg transplant -a -b newfeature-123 

olmaması çok kötü, dışında bırakır arkasında pre-rebase M-N-O olarak birleştirilmemiş bir baş oluşturur 3 yeni taahhüt M',N',O' temsil onları dallanma güncelleştirilmiş ana hat.

Temelde sorun, ben bu ile sonuna kadar

master A---B---C---D---E---F
                \           \
newfeature-123   \           M'---N'---O'
                  \
newfeature-123     M---N---O

bu son verilmeli, yerel, istenmeyen tamamlar geride bırakıyor, çünkü iyi değildir.

  1. Aynı linkten başka bir seçenektir
hg qimport -r M:O
hg qpop -a
hg up F
hg branch newfeature-123
hg qpush -a
hg qdel -r qbase:qtip

ve bu istenilen grafiği sonuç yok:

master A---B---C---D---E---F
                            \
newfeature-123               M---N---O

Bu komutları (hepsi 6!) ama çok daha karmaşık görünüyor

$ git rebase master

Git gibi basit eğer bu Hg tek eşdeğer ise veya Eğer başka bir yolu varsa bilmek istiyorum.

CEVAP
20 NİSAN 2010, Salı


VonC the answer you're looking for, Rebase Uzantısı vardır. Mercurial silinmez değişiklik hakkında. çünkü, ancak, bir veya iki saniye ne mq ne rebase mercurial, varsayılan olarak etkin neden düşünmeden harcamaya değer olduğunu: Neredeyse günlük olarak nitelendiren sensin şekilde çalışırken, buraya getiririm desen:

1. Start working on a new feature:
$ hg clone mainline-repo newfeature-123
do a few commits (M, N, O)

master A---B---C
                \
newfeature-123   M---N---O

2. Pull new changes from upstream mainline:
$ hg pull

master A---B---C---D---E---F
                \
newfeature-123   M---N---O

3. merge master into my clone so that my new feature 
can be developed against the latest upstream changes:
(from newfeature-123)
$ hg merge F

master A---B---C---D---E---F
                \           \
newfeature-123   M---N---O---P

ve bu gerçekten gerekli, hepsi bu. Kolayca mutlu olduğumda hat itme dönebildiğim kadar newfeature-123 bir klon ile bitiriyorum. En önemlisi, ancak, benhiç tarihini değiştirdi. Birisi benim csets bak ve aslında karşı kodlanmış olduklarını ve çalışmalarım boyunca ana hat değişimleri nasıl tepki verdiğimi görebilirsiniz. Herkes sanıyor ki değer, ama ben inançlı bir firma bu işin kaynağı kontrol etmek için Haritayı bize ne istediği oldu, ama aslında ne oldu her deadend ve her yeniden oluşturulması gerektiğini bırakın, silinmez bir iz, ve rebasing ve diğer tarihi kurgu teknikleri gizleyen.

Şimdi benim soapbox kaldırdım süre VonC cevabı seçin. :)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • FASHTAG

    FASHTAG

    5 EYLÜL 2012
  • PhoneArena

    PhoneArena

    7 NİSAN 2006