好吧,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 中会产生结果)
- 为了美化和缩短完整的管道命令, 可能会另外转换为 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
用于我的 repo 和您的变更集)
- 获取纯分支列表(
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)