Version control Mercurial钩子:如何在提交时查找当前目录

Version control Mercurial钩子:如何在提交时查找当前目录,version-control,mercurial,Version Control,Mercurial,我正在尝试使用C#.NET创建Mercurial SCM(hg)的挂钩,以便在提交或预提交时启动自定义C#应用程序 作为概念验证原型,我在Mercurial.ini文件的[hooks]部分中添加了一个自定义.exe的位置,用于预提交,另一个.exe用于提交。 这些.exe应用程序在预提交和提交时打开,如预期的那样 然而,到目前为止,这些可执行文件只是存根。 为了让他们做我需要的事情,他们必须“知道”提交即将发生(或已经发生)的当前目录。 Mercurial.ini位于Windows上的“我的用户

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

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

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

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

可执行挂钩总是在其当前目录设置为 存储库的根目录

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

来自:

可执行挂钩总是在其当前目录设置为 存储库的根目录


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

就是它!非常感谢你!System.IO.Directory类的GetCurrentDirectory方法完成了这个任务。非常感谢。我很高兴它成功了。因为这张唱片听起来像是疯狂的酱汁。你确定不想使用好的脚本语言吗?对于大型系统来说,C#是一种很好的语言,但是除非您构建的是单片的,否则编译/链接周期似乎有些过分。Ry4an:再次感谢您的帮助。回答你的问题:我使用C#作为钩子可执行文件,因为虽然我非常精通C#,但我对Python或任何其他脚本语言一无所知,可执行文件最终将需要做很多复杂的事情。。。所以,考虑到时间的限制,我宁愿使用我非常熟悉的东西。然而,当我写这篇文章的时候,我重新考虑了一下。。。我认为你是绝对正确的。我正在计划学习至少一种脚本语言。也非常感谢你的建议!就是这样!非常感谢你!System.IO.Directory类的GetCurrentDirectory方法完成了这个任务。非常感谢。我很高兴它成功了。因为这张唱片听起来像是疯狂的酱汁。你确定不想使用好的脚本语言吗?对于大型系统来说,C#是一种很好的语言,但是除非您构建的是单片的,否则编译/链接周期似乎有些过分。Ry4an:再次感谢您的帮助。回答你的问题:我使用C#作为钩子可执行文件,因为虽然我非常精通C#,但我对Python或任何其他脚本语言一无所知,可执行文件最终将需要做很多复杂的事情。。。所以,考虑到时间的限制,我宁愿使用我非常熟悉的东西。然而,当我写这篇文章的时候,我重新考虑了一下。。。我认为你是绝对正确的。我正在计划学习至少一种脚本语言。也非常感谢你的建议!