2

我正在尝试使用 C# .NET 创建 Mercurial SCM (hg) 的挂钩,以在提交或预提交时启动自定义 C# 应用程序。

作为概念验证原型,我将自定义 .exe 的位置添加到 Mercurial.ini 文件的 [hooks] 部分以进行预提交,并将另一个 .exe 用于提交。这些 .exe 应用程序按预期在预提交和提交时打开。

但是,到目前为止,这些可执行文件只是存根。为了让他们做我需要的事情,他们必须“知道”提交即将发生(或已经发生)的当前目录。Mercurial.ini 位于我在 Windows 上的用户配置文件目录中。例如,当我从位于 C:\MyProjects\TestProject 的 Hg 存储库中进行提交时,可执行文件需要知道该工作正在 C:\MyProjects\TestProject 中完成。

如何在运行时以编程方式从在本地计算机上执行 Mercurial 命令的“挂钩”可执行文件中找出?

4

1 回答 1

4

书中的钩子章节

可执行挂钩始终在其当前目录设置为存储库的根目录的情况下运行。

因此,您的可执行文件只需检查其当前工作目录即可了解调用它的存储库的根目录。

于 2012-08-10T15:24:43.777 回答