AnkhSVN客户端侧的预提交挂钩

3

基本上,我想做与那个人相同的事情 (这里)

似乎每个人都在思考服务器端钩子(具有所有恶意潜力)。

我希望在提交之前运行客户端脚本,以便 astyle 可以按照我的老板喜欢看到的方式格式化代码。

由于我的 IDE(VS2010Pro)自动检查文件何时在磁盘上更改并选择重新加载它,所以这样做没有真正的问题。

是否有任何(干净的)方法可以使用 AnkhSVN 完成这项任务?

也许还有一种方法可以扩展 VisualStudio 来调用我的预提交脚本...


刚刚添加了一个“外部工具”,并设置了临时的键盘快捷方式作为解决方法。 - santa
3个回答

3
似乎AnkhSVN正在使用TortoiseSVN的钩子脚本,因为有关于它在夜间版本中的讨论。此外,每日更新似乎提到了钩子(例如修订版10870修订版10873)。
尝试获取每日构建,并在Visual Studio中的工具->选项->源代码控制->Subversion环境中查看Subversion选项。如果这样不起作用,请尝试打开Windows注册表到HKEY_CURRENT_USER\Software\AnkhSVN\VisualStudio\<Version>\Configuration(其中<Version>应为10.0),并添加一个名为EnableTortoiseSvnHooks的字符串,数据为True,如上述对话链接中所述。

我星期一会试一下,如果成功了,奖励就归你了!提前感谢你! - santa
1
抱歉之前没时间,但是看这里:http://baevo.com/interwebs/client_side_hooks_in_ankhsvn.jpg 奖金将属于你 :-) 谢谢! - santa
在Windows 10上,Microsoft Visual Studio Community 2015版本14.0.25123.00更新2中,该选项似乎无法正常工作。 - alehro

1

Visual Studio > 工具 > 选项

enter image description here


感谢ty levitikon的分享,但我已经习惯在提交之前使用快捷方式启动astyle作为外部工具。也许下一天我有太多时间时会尝试一下,但另一方面,那什么时候会发生呢 :) - santa

0

如果你能够放弃使用AnkhSVN并转向TortoiseSVN,你就可以免费获得客户端钩子支持

你可以使用任何可执行的东西作为钩子,它们会根据钩子脚本的类型传递不同的参数。

例如,pre-commit钩子会获得以下参数:

PATH DEPTH MESSAGEFILE CWD

元素如下:

  • PATH
    临时文件的路径,其中包含启动操作的所有路径。每个路径在临时文件中都是单独的一行。

  • DEPTH
    提交/更新所执行的深度。

  • MESSAGEFILE
    包含提交日志消息的文件路径。该文件以UTF-8编码的文本格式保存。在成功执行start-commit钩子后,将读取日志消息,从而使钩子有机会对其进行修改。

  • CWD
    运行脚本的当前工作目录。这被设置为所有受影响路径的公共根目录。

虽然TortoiseSVN没有集成到VS中,但我认为它值得一试,因为您可以将其用作其他项目的通用客户端(即您不使用VS进行的所有其他编码/脚本工作)。


我无论如何都使用乌龟Git,但是我不想放弃VS集成 :) - santa
客户端钩子在Tortoise帮助文档的“4.30.8.客户端钩子脚本”一节中有详细描述(上述大部分答案都是从该文档中引用的)。 - user1068352
@user1068352:是的,绝对没错。TSVN文档中的章节已经与这个答案链接在一起了。但是在SO上,不仅分享链接,还要在答案中提及链接的内容是一个好习惯。这样做,即使链接目标更改或被删除,答案仍然有效。 - eckes
@eckes,我只是想指出Tortoise安装的帮助文件也有这个内容。实际上,在看到你的回答时,我正在阅读它 :) - user1068352

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接