【问题标题】:Mercurial hook fails to execute when its script changedMercurial 钩子在其脚本更改时无法执行
【发布时间】:2016-02-12 05:43:51
【问题描述】:

我有一个使用 Python 脚本的 pretxncommit 钩子。这个 Python 脚本本身在同一个 repo 中受版本控制。在我向脚本本身添加更改之前一切正常,这在尝试提交或合并此类更改时导致了一堆错误。

我该如何解决这个问题?我能想出的最佳解决方案是使用 subrepo,但我不太喜欢它。

错误示例:

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'

【问题讨论】:

  • 什么样的错误?

标签: mercurial hook pre-commit-hook


【解决方案1】:

如果提交意味着钩子脚本在执行期间发生更改或错误,则在存储库本身中找到脚本的地方运行钩子可能会很棘手——尤其是当脚本本身在某个时刻处于某种未定义状态时自己修改了。

一种解决方案是从存储库之外的另一个站点运行钩子,例如 ~/bin 并在提交后额外使用一个钩子,或者可能 txnclose 更新存储库中 ~/bin 中的脚本版本,可能在此之前进行健全性测试,以确保您不会更新到损坏的版本。

这就是我更新所有运行我的编译场的脚本的方式:它们都在一个与 CF 相关的存储库中,并且挂钩到该与 CF 相关的存储库首先触发测试使用新提交的版本运行,以确保 CF 可以使用并且只有在这些测试成功通过时才会永久更新 CF 的脚本。

【讨论】:

  • 我解决了这个问题,这似乎是一个内部脚本错误。还是谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2019-10-03
相关资源
最近更新 更多