【问题标题】:How to write mercurial hooks on windows?如何在 Windows 上编写 mercurial 钩子?
【发布时间】:2015-01-07 11:23:40
【问题描述】:

我想在我的存储库中添加一个挂钩。我不知道我需要把钩子文件放在哪里。 hgrc文件如下:

[hooks]
precommit.test =  precommithook

位置是 C:\Code\RepoTest.hg\hgrc

挂钩文件是:

echo "hello world"

位置是 C:\Code\RepoTest.hg\precommithook

当我跑步时

hg 提交 -m"test"

从命令行我得到

running hook precommit.test: precommithook
'precommithook' is not recognized as an internal or external command,
operable program or batch file.
abort: precommit.test hook exited with status 1

我尝试了各种路径,但没有任何效果。

我在 Google 上搜索到的有关 Mercurial 挂钩的大多数示例都是基于 Unix 的。

是否可以在 powershell 中编写挂钩?

【问题讨论】:

  • 我把它当作一个批处理文件?你确定有 .bat 扩展名吗?从您的示例中不清楚,我不想假设。
  • 它可能是一个批处理文件。我添加了 .bat 扩展名,但我必须添加完整路径才能访问该文件。 C:\Code\RepoTest\.hg\precommithook.bat 无论如何?
  • 相对路径可能是:precommit.test = .\precommithook.bat。您可以使用的路径将取决于命令在哪个路径下运行,也许将 %CD% 变量的回显添加到批处理文件中以查看它认为它正在运行的位置,然后这可能有助于确定您需要使用的路径。

标签: mercurial


【解决方案1】:

根据 Hooks 文档,hook 必须在给定的环境程序中是可执行的,它没有预定义的位置,但必须由操作系统找到。

因此:

  • 对于纯Windows,钩子必须命名为precommithook.bat
  • 它必须放在 $PATH 中的 dir 或钩子定义中使用的完整路径中

结果,与

precommit.test = z:\precommit.bat 在 hgrc 中

@echo off

echo Hello World in z:\precommit.bat

我有提交尝试

>hg commit -m "Edits"
Hello World

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多