0

私は、mercurial ログを解析し、任意の 2 つのリビジョン間のすべての変更のレポートを生成するスクリプトに取り組んでいます。ブランチを処理するには、revsetを使用して最終リビジョンの祖先を生成する必要があると思いますが、範囲を制限して、開始リビジョンの祖先であるリビジョンを除外したいと考えています。

   10
  /
 / 
9
|\
| \
|  \
8   | 
|   7
| 6 |
|/  |   
5   4
|  / 
| /
|/
3 
|   
| 
|
2
|
|
|
1

3 では、フィーチャー ブランチがデフォルト ブランチから作成されます。

5 で、デフォルト ブランチからリリース ブランチ (6) が作成されます。

9 で、フィーチャー ブランチがデフォルトにマージされ、新しいリリース (10) が作成されます。

10 => 4,5,7,8,9,10 に影響する 5 以降のすべての変更のリストが必要です

私が抱えている問題は、機能ブランチを介して 3 に到達したときに祖先検索を制限することです。3はすでに5の一部だったので、私はそれを望んでいません.

私がレビューした他の議論:

クローズしますが、スコープの制限には役立ちませんでした。

これは、ブランチを知っていることを意味しますが、それらすべてを動的に見つける必要があります。

4

1 に答える 1

1

OK、ビジネス タスク「リリースの新機能」である場合、revset の最適な繰り返しはancestors(LAST) - ancestors(PREVIOUS)、つまりサンプル用です。

hg log -r "ancestors(10) - ancestors(6)"

(6にあったため、出力にr5がないことに注意してください)

おそらく、revset は [revsetalias] でより使いやすくなり、読みやすくするためにエイリアスが追加されます。smth.like (未テスト!!!)

[revsetalias]
new($1,$2) = ancestors($1) - ancestors($2)

[alias]
cl = log -r "new($1,$2)" --style changelog
于 2015-11-04T01:07:31.083 に答える