【发布时间】:2014-08-07 15:47:09
【问题描述】:
有时,我团队中的开发人员在提交自己的变更集之前忘记拉入其他开发人员的变更集(诚然,我也这样做)。对于为期一周的项目,新提交跳过的树中可能有数十个更改。当尝试推送时,hg 使用新的远程头消息中止,然后它们拉入并合并所有这些新提交。我正在寻找的是一种简单的方法来测试在某人提交之前是否有任何新更改以及是否有防止提交发生。理想情况下,会有一条明确的消息说明提交失败的原因。
这对于一个钩子来说似乎应该很容易完成,但是预提交钩子将继续状态码为 0,并且当没有更改时,hg 传入将返回 1。我需要做的就是反转 hg 传入命令的状态,但我找不到执行此操作的语法。我发现的大多数搜索结果都直接涉及编写 python 钩子,但对于这样一个简单的问题,这似乎有点过头了。
我正在寻找这样的东西:
[hooks]
pre-commit != hg incoming
or
pre-commit = hg incoming == 0
我也不确定消息会去哪里。
【问题讨论】:
-
如果您也需要消息,python 脚本可能不会那么矫枉过正!
-
@Vince:我不需要消息,它只是理想的。我认为我的挫败感是由于无法将简单的逻辑 NOT 应用于 Hg 命令的结果。
-
在 some remote 状态为 BAD IDEA (tm) 的情况下阻止 任何本地 操作。无论如何,您可以尝试使用 shell-alias 重新定义
hg commit