ブランチdev
がrelease
ブランチにマージされてリリースコミットを形成しました。新しい場所でmercurialブランチを続ける
このマージコミット後にdev
を再オープンして、私のリポジトリにビジュアルな「ファンインファンアウト」スタイルを持たせたいと考えています。これは、コミットとブランチがすべて私のリリースコミットに収束し、次のリリースのために働くということです。これにより、各リリースに含まれている内容を視覚的に確認することができ、タグ付きリリースコミット間で分離された状態に保ちます。
dev
はもはや隣接ブランチではなく、これは水銀で可能かどうか疑問に思っています。
リリース後にもう一度hg branch dev
を試してみると、水銀はそれがすでに存在すると訴えています。たとえ私がそれをマージした後に--close-branch
と言うことでコミットしても。
だから、現在、私の回避策はにある: (1)スクリプトに、より手間のかかるかつ困難であるリリースごとに異なるdev-VERSION
を使用するか、 のいずれか(2)release
に並列にdev
を実行しているrelease
にdev
からマージ保ちますそれほど悪くはない、私たちの特定のリリースプロセスでちょっと混乱しているだけです。
これは非標準の水銀放出プロセスのように思えるかもしれません。それは私たちの特定のプロジェクトとチームの構造に本当によく合います。
ありがとうございました!
EDIT:
私は少し明確に何を意味するかにするために、私はdev
にfeature-01
ブランチをマージしてからrelease-1.1
を作成するためにrelease
にdev
を合併していた想像してみてください。
# 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
を。
私はそれがより明確になることを望みます。助けてくれてありがとう!
ありがとうございましたネイサン - 私は現在行っていることですが、私の質問でオプション(2)のように聞こえる。私はそれが私が後になっている "ファンインファンアウト"スタイルを与えるとは思わない。 – rmin
あなたが私を信じていないなら、hg log -Gでチェンジセットグラフを見てください。あなたの新しい変更は開発中ですが、リリースのトポロジカルな子です。 – ngoldbaum
もう一度ありがとうございます。私はより明確にしようと私の質問を更新しました。私はあなたが言ったことを試みたが、私が何をしたのか分からなかったので、誤ったコミュニケーションがあるかもしれない。サンプルスクリプトを見て、おもちゃの例のコマンドをどのように変更するのか教えてください。 – rmin