mercurial - 我如何判断 Mercurial merge 是否微不足道?

标签 mercurial

有时,当我执行 hg merge 然后查看 hg status 时,不会打印任何内容。其他时候我会看到其他分支的实际变化。为什么会发生这种情况?您能解释一下 merge 之间的差异吗?

这个问题的要点是:我们将 Mercurial 连接到 Jira 并强制每个提交必须包含一个任务 id,并且每个此类提交在推送之前都会经过代码审查。但是,我们不需要对“琐碎” merge 进行审查,因此我们在提交 Hook 中进行此检查:

if not ctx.files():
    return ALLOW_COMMIT

但是,我遇到过提交微不足道的情况(即,Mercurial 完成了所有工作,我不需要解决任何冲突),但 ctx.files() 列表不为空。然而,大多数时候,它工作得很好。我本来想为每种情况发布一个示例,但我似乎无法理解这两种情况之间有什么区别。

基本上我问的是:我如何判断 Mercurial merge 是否微不足道?

最佳答案

您可以重播 merge 。如果失败了,那可不是一件小事。 如果成功,将结果与之前提交的 merge 进行比较。如果两个 merge 结果相同,则这是一个简单的 merge ,否则需要手动调整。

但是,这假设重播使用与原始 merge 相同的 merge 算法。不同的 Mercurial 版本和配置可能与此假设相冲突。

更新

如果您想在提交 merge 之前进行这些检查,您可以使用预 merge Hook 来“预览” merge (而不是事后重播)。在 Hook 中,自动执行建议的 merge 并检查是否存在冲突。没有冲突 → 可能很简单,将 merge 差异保存在临时文件中。不要忘记放弃由自动 merge (hg up -r . -C) 引起的工作副本更改。然后,当人们想要提交实际 merge 时,使用预提交 Hook 来检查手动 merge 是否与临时文件中存储的自动 merge 不同。如果不同,则需要进行审核。

然而,虽然这原则上应该有效,但恕我直言,这是一种过度设计。

关于mercurial - 我如何判断 Mercurial merge 是否微不足道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14944787/

相关文章:

svn - 如何在Mercurial中提取变更集的所有变更文件?

version-control - 作为一个单独的开发者我应该如何使用 Mercurial?

linux - 在 Redhat Linux 上安装 Mercurial

windows - 如何在 Windows 上永久更改 mercurial 命令行的语言?

mercurial - 商店中缺少 hg 大文件 XXX(需要上传)

Mercurial:拉取 merge 提交后无法推送到远程存储库

version-control - Mercurial,永远忘记文件

mercurial - HG:撤消历史记录的提交

mercurial - 在 Jenkins 中配置多个 Mercurial 存储库

git - 使用分布式版本控制系统时,您最酷/最不寻常的技巧是什么?