2017-07-11 8 views
0

ブランチdevreleaseブランチにマージされてリリースコミットを形成しました。新しい場所でmercurialブランチを続ける

このマージコミット後にdevを再オープンして、私のリポジトリにビジュアルな「ファンインファンアウト」スタイルを持たせたいと考えています。これは、コミットとブランチがすべて私のリリースコミットに収束し、次のリリースのために働くということです。これにより、各リリースに含まれている内容を視覚的に確認することができ、タグ付きリリースコミット間で分離された状態に保ちます。

devはもはや隣接ブランチではなく、これは水銀で可能かどうか疑問に思っています。

リリース後にもう一度hg branch devを試してみると、水銀はそれがすでに存在すると訴えています。たとえ私がそれをマージした後に--close-branchと言うことでコミットしても。

だから、現在、私の回避策はにある: (1)スクリプトに、より手間のかかるかつ困難であるリリースごとに異なるdev-VERSIONを使用するか、 のいずれか(2)releaseに並列にdevを実行しているreleasedevからマージ保ちますそれほど悪くはない、私たちの特定のリリースプロセスでちょっと混乱しているだけです。

これは非標準の水銀放出プロセスのように思えるかもしれません。それは私たちの特定のプロジェクトとチームの構造に本当によく合います。

ありがとうございました!


EDIT

私は少し明確に何を意味するかにするために、私はdevfeature-01ブランチをマージしてからrelease-1.1を作成するためにreleasedevを合併していた想像してみてください。

# Create test 
rm -rf test 
mkdir test 
cd test 

# Set up v1.0 
hg init 
hg branch release 
touch a 
hg commit -m 'Release v1.0' 

# Set up dev branch 
hg branch dev 
touch b 
hg add b 
hg commit -m 'Created dev' 

# Feature branch 
hg branch feature-01 
touch c 
hg add c 
hg commit -m 'Add c' 
hg update dev 
hg merge feature-01 
hg commit -m 'Merge feature-01' 

# Release all the things 
hg update release 
hg merge dev 
hg commit -m 'Release v1.1' 

# Start a new feature branch 
hg update dev # <------ crucial line 
hg branch feature-02 
touch d 
hg add d 
hg commit -m 'Add d' 
hg update dev 
hg merge feature-02 
hg commit -m 'Merge feature-02' 

:これは私がこのような何かを取得しようとしている例はbashスクリプトです

@ changeset: 6:4bcc59fe6ded 
|\ branch:  dev 
| | summary:  Merge feature-02 
| | 
| o changeset: 5:8e117ffe64d0 
| | branch:  feature-02 
| | summary:  Add d 
\ | 
    o changeset: 4:c39dae3ff2fa <---- all commits converge to here then diverge back out 
/| branch:  release 
| | summary:  Release v1.1 
| | 
o | changeset: 3:c89af2b3e8db 
| | branch:  dev 
     summary:  Merge feature-01 

:それはのような可視化とdevに合流オフそれから私は、新しいfeature-02ブランチを作りたいです私がをdevブランチに続けようとすると、がその親としてコミットされ、4:bbc951a4b339のコミットをdevブランチにコミットすることができます。

hg log -G

は大体この出力を提供します:

@ changeset: 6:46539f99dadd 
|\ branch:  dev 
| | tag:   tip 
| | summary:  Merge feature-02 
| | 
| o changeset: 5:885b0b930fed 
|/ branch:  feature-02 
| summary:  Add d 
| 
| o changeset: 4:bbc951a4b339 <--- not the parent of the new changes 
|/| branch:  release 
| | summary:  Release v1.1 
| | 
... 

新規リリース後の最初の機能ブランチはreleaseから直接分岐されているように、私は自分のプロセスを変更することができ、それはスクリプトに難しいプロセスを行い、ちょうど遅らせます

だから私は、上記と同じスクリプトを使用したが、わずかにそれを変更した場合::私はdevにマージする必要があるまで、問題

... 
# Start a new feature branch 
#hg update dev 
hg update release # <--- changed to release 
hg branch feature-02 
... 
私は devをrebranchしようとした場合

@ changeset: 6:4bcc59fe6ded <---- has the previous `dev` as a parent 
|\ branch:  dev 
| | summary:  Merge feature-02 
| | 
| o changeset: 5:8e117ffe64d0 
| | branch:  feature-02 
| | summary:  Add d 
| | 
| o changeset: 4:c39dae3ff2fa 
|/| branch:  release 
| | summary:  Release v1.1 
| | 
o | changeset: 3:c89af2b3e8db 
|\ \ branch:  dev 
|| | summary:  Merge feature-01 
... 

:0

その後、私のグラフは、ビーイングを終わる

... 
# Start a new feature branch 
#hg update dev 
#hg update release 
hg branch dev # <--- changed 
hg branch feature-02 
... 

私はエラーを取得:abort: a branch of the same name already existsを。

私はそれがより明確になることを望みます。助けてくれてありがとう!

答えて

1

マージ後、hg update devを実行してコミットを開始してください。ブランチを閉じて再度開く必要はありません。新しいブランチを作成する必要はありません。

+0

ありがとうございましたネイサン - 私は現在行っていることですが、私の質問でオプション(2)のように聞こえる。私はそれが私が後になっている "ファンインファンアウト"スタイルを与えるとは思わない。 – rmin

+0

あなたが私を信じていないなら、hg log -Gでチェンジセットグラフを見てください。あなたの新しい変更は開発中ですが、リリースのトポロジカルな子です。 – ngoldbaum

+0

もう一度ありがとうございます。私はより明確にしようと私の質問を更新しました。私はあなたが言ったことを試みたが、私が何をしたのか分からなかったので、誤ったコミュニケーションがあるかもしれない。サンプルスクリプトを見て、おもちゃの例のコマンドをどのように変更するのか教えてください。 – rmin

関連する問題