私たちはソース管理にMercurialを使用しており、QAプロセスの自動マージと変更履歴を紹介したいと思います。この議論の目的のために 、ちょうど私たちは以下のようなシンプルな3分岐フローを使用することを想定してみましょう:水銀でマージログを生成
\ = forward merge
| = back merge of fix
Default --O--A--*--B--*---
\ ^ \
\ | \
QA -----M--X--C--*--N---
^ \
| \
Master --------H--------*---
そこで質問です: それは、マージNでrevsetクエリを構築することが可能です、好ましくは実際にそれを実行する前に、それ以外の場合は、QAブランチにはまだ入っていないDefaultブランチ上のすべてのコミットのログを生成します(上記の図ではAとBです)。
代替策: DefaultをQAにマージした場合にマージされるすべてのチェンジセットを返すリボセットクエリを作成することは可能ですか?
私はデフォルトブランチ上のコミットだけに興味があり、デフォルトに統合されたフィーチャーブランチ内の個々のコミットではありません(図に含まれていないフィーチャーブランチ)。 QAブランチのコミットにも興味はありません。
リポジトリはかなり維持されていますが、数年前で約13000のノードが含まれています。
私は祖先と祖先を実験していましたが、Xを最新の共通祖先または非常に古いノードとして取得します。更新は「HGを使用して
hg log --rev "((heads(branch('Default')) and !closed()) % heads(branch('QA'))) and branch('Default') and p2(!branch('QA'))"
hg log --rev "((heads(branch('Default')) and !closed()) % heads(branch('QA'))) and branch('Default') and !children(branch('QA'))"
:私が持っていたほとんどの運はこれのバリエーションである私はXを得るためのロジックを理解し、私はO.
後に本当によいずれかの超楽しい
changeset: 13070:7e59fc16aa4e
branch: Default
parent: 13068:5b9409ad504f
parent: 13069:849bd43d2023
user: *******
date: Mon Dec 18 18:40:46 2017 +0200
summary: Merged Feature branch A
changeset: 13071:07470ff919ff
branch: Feature branch B
parent: 13061:540eda2c959b
parent: 13068:5b9409ad504f
user: *****
date: Mon Dec 18 18:49:42 2017 +0200
summary: Merge with Default
changeset: 13072:a53260ffabca
branch: Feature branch B
user: *****
date: Mon Dec 18 18:58:05 2017 +0200
summary: Some text
changeset: 13073:37c895f2abf0
branch: Default
parent: 13070:7e59fc16aa4e
parent: 13072:a53260ffabca
user: *******
date: Mon Dec 18 18:58:05 2017 +0200
summary: Merged Feature branch B
それほど悪くはなく、未:トムによって示唆されているように、--preview --rev XYZ」をマージし、このような出力を生成します。少なくとも、単純なgrep/slsよりも多くのロジックが必要です。事前に
おかげで、 ジョン
プレビューをマージしませんか?例えば。 hg update -b QA; hg merge -P -r REV – Tom
マージプレビューは、すべての機能ブランチのコミットと、それらの機能ブランチのマージコミットを返します。 --templateオプションもないので、そのまま出力を解析する必要があります。 あなたのコメントは私が検索の早い段階で放棄した、私がhgログを使ってうまくいくと確信していたので、私が再結合するようにしました。 私は、プレビューログを解析して、デフォルトブランチ上の最初のノードを見つけ出し、それに基づいてhgログを使用すると、うまくいくと思います。 – JJJ
シンプルなgrep:hg merge -P -r REV | grep --before-context 1 'branch:。*デフォルト' | ' grep changeset – Tom