Mercurial 钩子在其脚本更改时无法执行
Mercurial hook fails to execute when its script changed
我有一个使用 Python 脚本的 pretxncommit
挂钩。这个 Python 脚本本身在同一个 repo 中受版本控制。一切正常,直到我将更改添加到脚本本身,这导致在尝试提交或合并此类更改时出现一堆错误。
我该如何解决这个问题?我能想到的最佳解决方案是使用子存储库,但我不太喜欢它。
错误示例:
Traceback (most recent call last):
File "hg", line 43, in <module>
File "mercurial\dispatch.pyc", line 30, in run
TypeError: unsupported operand type(s) for &: 'str' and 'int'
运行 如果提交意味着钩子脚本在执行期间发生更改或错误,则在存储库本身中找到脚本的钩子可能会很棘手 - 特别是因为脚本本身可能处于某种未定义的状态在某个时候它自己被修改。
一个解决方案是 运行 来自存储库之外的另一个站点的挂钩,例如 ~/bin 并在 post-commit 或 txnclose 中额外使用一个挂钩,它将脚本版本更新为在存储库的 ~/bin 中找到,之前可能会进行健全性测试以确保您不会更新到损坏的版本。
这就是我更新 运行 我的编译场的所有脚本的方式:它们都在与 CF 相关的存储库中,并且挂钩到该 CF 相关存储库首先触发测试 运行s新提交的版本以确保 CF 将与它们一起工作,随后仅在这些测试成功通过时才永久更新 CF 的脚本。
我有一个使用 Python 脚本的 pretxncommit
挂钩。这个 Python 脚本本身在同一个 repo 中受版本控制。一切正常,直到我将更改添加到脚本本身,这导致在尝试提交或合并此类更改时出现一堆错误。
我该如何解决这个问题?我能想到的最佳解决方案是使用子存储库,但我不太喜欢它。
错误示例:
Traceback (most recent call last):
File "hg", line 43, in <module>
File "mercurial\dispatch.pyc", line 30, in run
TypeError: unsupported operand type(s) for &: 'str' and 'int'
运行 如果提交意味着钩子脚本在执行期间发生更改或错误,则在存储库本身中找到脚本的钩子可能会很棘手 - 特别是因为脚本本身可能处于某种未定义的状态在某个时候它自己被修改。
一个解决方案是 运行 来自存储库之外的另一个站点的挂钩,例如 ~/bin 并在 post-commit 或 txnclose 中额外使用一个挂钩,它将脚本版本更新为在存储库的 ~/bin 中找到,之前可能会进行健全性测试以确保您不会更新到损坏的版本。
这就是我更新 运行 我的编译场的所有脚本的方式:它们都在与 CF 相关的存储库中,并且挂钩到该 CF 相关存储库首先触发测试 运行s新提交的版本以确保 CF 将与它们一起工作,随后仅在这些测试成功通过时才永久更新 CF 的脚本。