AnkhSVN 客户端预提交钩子

Posted

技术标签:

【中文标题】AnkhSVN 客户端预提交钩子【英文标题】:AnkhSVN client side pre-commit hook 【发布时间】:2012-04-10 22:23:30 【问题描述】:

基本上我想和there上的家伙做同样的事情。

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

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

由于我的 IDE (VS2010Pro) 会自动检查磁盘上的文件何时发生更改并选择我重新加载它,所以这一切并没有真正的邪恶。

是否有任何(干净的)方法可以使用 AnkhSVN 实现这一目标?

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

【问题讨论】:

刚刚添加了一个带有键盘快捷键的“外部工具”作为临时解决方法 【参考方案1】:

Visual Studio > 工具 > 选项

【讨论】:

ty levitikon 用于分享,但在将 astyle 作为外部工具踢之前,我已经习惯了使用快捷方式。也许我会在接下来的几天有太多时间时试一试。但另一方面 - 什么时候发生:)【参考方案2】:

似乎 AnkhSVN 正在使用 TortoiseSVN 的钩子脚本,因为有 a conversation about it being in the nightly builds。 daily updates 似乎也提到了钩子(例如 revision 10870 和 revision 10873。

尝试获取 daily build 并在 Visual Studio 中查看 Tools->Options->Source Control->Subversion Environment 中的颠覆选项。如果这不起作用,请尝试将 Windows 注册表打开到 HKEY_CURRENT_USER\Software\Ankh​SVN\VisualStudio\​<Version>\Conf​iguration(其中 <Version> 对您来说应该是 10.0)并添加一个名为 EnableTortoiseSvnHooks 的字符串和数据 True,如上面的对话链接中所述。

【讨论】:

我会在星期一试一试——如果成功的话——奖励就是你的了!提前致谢! 抱歉 - 没有时间早点 - 但请看:baevo.com/interwebs/client_side_hooks_in_ankhsvn.jpg 赏金将属于你 :-) 谢谢! 该选项在 Windows 10 上的 Microsoft Visual Studio Community 2015 版本 14.0.25123.00 Update 2 中似乎不起作用。【参考方案3】:

如果您可以离开 AnkhSVN 并切换到 TortoiseSVN,您将获得对客户端挂钩 for free 的支持。

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

pre-commit 钩子例如获取以下参数:

PATH DEPTH MESSAGEFILE CWD

其中的元素如下:

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

DEPTH 提交/更新完成的深度。

MESSAGEFILE 包含提交日志消息的文件的路径。该文件包含 UTF-8 编码的文本。成功执行 start-commit 钩子后,会读回日志消息,让钩子有机会修改它。

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

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

【讨论】:

无论如何我都使用乌龟 - 但我不想放弃 vs-integration :-) 客户端钩子在 Tortoise 帮助中的“4.30.8. 客户端钩子脚本”下进行了描述(上面的大部分答案都是它的引用)。 @user1068352:是的,绝对的。 TSVN 文档中的章节与此答案相关联。但是,在 SO 中,不仅要共享链接,还要在答案中显示链接的内容,这是一种很好的做法。这样做,当链接目标改变或被删除时,答案仍然有效。 @eckes 我只是想指出随 Tortoise 一起安装的帮助文件也有。我实际上是在看到您的答案时阅读它:)

以上是关于AnkhSVN 客户端预提交钩子的主要内容,如果未能解决你的问题,请参考以下文章

Husky 预提交钩子和压缩提交

SVN - 预提交钩子检查代码格式

Git远程/共享预提交钩子

“测试”的 husky 预提交钩子未完成

TortoiseSVN通过visual Studio提交不运行hook-script

将其添加到 package.json 后,husky 预提交钩子不起作用