Mercurial钩子:如何在提交时找到当前目录

时间:2012-08-10 14:40:34

标签: version-control mercurial

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

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

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

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

1 个答案:

答案 0 :(得分:4)

来自hook chapter in the book

  

始终运行可执行挂钩,并将其当前目录设置为a   存储库的根目录。

因此,您的可执行文件只需检查其当前工作目录即可知道正在调用它的repo的根目录。