1

現在のワークフローでは、ブランチが必要なときはいつでもブックマークを使用しますが、現在のリビジョンから新しいヘッドを作成するには、ダミーの変更をコミットして1つのリビジョンに戻り、それをコミットする必要があります。そうしないと、コミットが行われます。ブックマークがいくつあっても、同じ頭。

たとえば、私がrev40を使用しているとします。

hg bookmark main
hg ci somefile -m 'dummy commit' # on rev 41 now
hg up -r 40
# make some changes
hg ci -A -m 'changes in bookmark' # created new head
hg bookmark test

これは一般的ですか、それとも新しい頭の作成を強制するためのいくつかのショートカットがありますか?

4

2 に答える 2

1

nvieのワークフローを練習したいので、-no-ffを使用してアップストリームとマージしたいと思います。

私が思い出す限り、hgは同じブランチのアップストリームとのマージをサポートしていません。この投稿で述べたように、hgのヘッド/ブックマークはgit'tブランチですが、hgのブランチは系統です。

したがって、解決策は分岐点にあり、ブックマークとブランチの両方を変更します。その後、系統が異なるため、ブランチをマージできます。

hg branch -f dev私の例では、接続されていなくてもブランチを簡単に開くことができます。

したがって、次のようなブランチを持つことができます。

  • デフォルト
  • 安定
  • 特徴
  • 修正プログラム

次に、ブックマークのプレフィックスを次のようにします。

  • 特徴-*
  • ホットフィックス-*

そして、それらは対応するブランチから分岐する必要があります。

その後、彼らはすることができます

私の例のグラフログ

于 2013-03-05T22:16:02.013 に答える
1

例で2番目のヘッドを作成する必要はなく、その作成を強制しないでください。

ワークフローの利点は、機能の作業を停止しtestて、次のようにメインブランチでより緊急の変更を行うことができることです。

> hg bookmark main
> hg bookmark test         # Start work on feature test

 ... do some code ...

> hg commit -m "Working on feature test"
> hg update main           # Stop working on test, start working on main

 ... do an urgent fix ...

> hg commit -m "Urgent fix"
> hg update test           # Back to work on feature test

 ... do some more code ...

> hg update main           # Finished the work so back to main
> hg merge test            # Merge the work into main
> hg commit -m "Merge in feature test"

これが完了すると、新しい機能が完成し、メインの開発ブランチにマージされます。

main機能の作業が終了したときにブランチに変更をtest加えないと、変更セットを祖先にマージできないため、変更をマージできません。そのため、ブックマークを次のようにmainブックマークに移動する必要がありtestます。次のとおりです。

> hg update test
> hg bookmark main -f

(これは早送りマージと呼ばれ、git必要に応じて強制的にマージできると思いますがmercurial、私が知る限り、同等のものはありません)

于 2013-03-05T22:23:37.757 に答える