さて、2つの(汚い)ソリューション
後処理スタイル
出発点として元のコマンドをわずかに変更しました (別のリポジトリが使用されました)
>hg log -r "::. & tag()" --template "{branch} {tags}\n"
(短い構文とテンプレート、テスト用の静的リーフ ノード)。後処理の結果に問題があります
default 1.0
default 1.0.1
default 1.1
default 1.1.1
default 1.1.2
default 1.2
default 1.2.1
default 1.3
default 1.4
default 1.5
stable 1.5.1
default 1.6
stable 1.6.1
ブランチ固有のタグが断片化されているためです。ブランチでソートすると、すべてのブランチ内のタグの内部順序が保存されます
>hg log -r "sort(::. & tag(), branch)" --template "{branch} {tags}\n"
default 1.0
default 1.0.1
default 1.1
default 1.1.1
default 1.1.2
default 1.2
default 1.2.1
default 1.3
default 1.4
default 1.5
default 1.6
stable 1.5.1
stable 1.6.1
すべてのブランチ (+ リストの最後の文字列) の最後のレコードのみを出力することは、どの言語でも簡単な作業です。
hg log | <command>
インゴットを使用可能な溶液に変換するために、次の修正が適用されます
ltb = hg log -r "sort(::$1 & tag(), branch)" --template "{branch} {tags}\n"
(そしてhg ltb 471694254d60 | <command>
シェル内で結果が生成されます)
- 美化と短縮のために、完全なパイプ コマンド はさらに shell-alias に変換され、ltb は次のようになります。
ltb = !$HG log -r "sort(::$1 & tag(), branch)" --template "{branch} {tags}\n" | <command>
(現在は単に として使用hg ltb 471694254d60
)
前処理スタイル
revsetの専門用語の「ブランチで最後にタグ付けされた変更セット」は(あなたの場合)last(::REV & tag() & branch(BRANCH))
、ブランチごとに繰り返されるか、
(last(::REV & tag() & branch(BRANCH1))) | (last(::REV & tag() & branch(BRANCH2)) | ... | (last(::REV & tag() & branch(BRANCHN))
単一の巨大なコマンドで。主な問題は、事前定義されたリストがないため、コマンドに必要なすべてのブランチをリストすることです。
あなたはできる
最も簡単な方法はhg branches
>hg branches
default 1196:878372849175
stable 1179:e4b737479302 (inactive)
すべてのブランチ名(最初のフィールド)を手動でログに挿入します(hg log -r "last(::471694254d60 & tag() & branch(default))" > log.txt
+私のレポと変更セットの場合)hg log -r "last(::471694254d60 & tag() & branch(stable))" >> log.txt
- 純粋なブランチリストを取得し(
hg branch
再度)、それを xargs にパイプします。これは、(テストされていません!!)hg log
のような単一のブランチに対して実行されます。
hg branches | gawk {print $1} | \
xargs -I BRANCH hg log -r "last(::471694254d60 & tag() & branch(BRANCH))" --template "{branch} {tags}\n"
(デバッグ後も shell-alias に変換可能)