如何在Mercurial中获取新变基提交的哈希值
Mercurial变基后自动切换到新提交的别名实现
当然可行,你可以通过Mercurial的日志命令结合过滤逻辑,获取变基后的新提交哈希,修改你的别名函数如下:
function rs() { stable OLD_COMMIT="$1" hg rebase -s "$OLD_COMMIT" -d stable # 提取变基后的新提交短哈希 NEW_COMMIT=$(hg log --follow --rev "$OLD_COMMIT" --template "{node|short}\n" | head -n 1) hg up "$NEW_COMMIT" hg ssl }
关键逻辑说明
hg log --follow --rev "$OLD_COMMIT":--follow参数会跟踪目标变更集的衍生历史,包括变基后生成的新提交(变基后的旧提交会被标记为hidden,这个参数能跨越hidden记录找到最新的有效提交)。--template "{node|short}":指定日志输出仅包含提交的短哈希,避免多余信息干扰。head -n 1:取日志结果的第一行,也就是最新的那个变基后提交的哈希。
如果你的Mercurial版本较低不支持--follow,也可以通过匹配原始提交的描述来查找新提交:
NEW_COMMIT=$(hg log --rev "desc($(hg log --rev "$OLD_COMMIT" --template "{desc}"))" --template "{node|short}\n" | head -n 1)
这种方式依赖提交描述的唯一性,不如第一种方法可靠,优先推荐使用--follow的方案。
内容的提问来源于stack exchange,提问作者ragurney
相关产品推荐
相关产品推荐

