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\AnkhSVN\VisualStudio\<Version>\Configuration
(其中 <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 客户端预提交钩子的主要内容,如果未能解决你的问题,请参考以下文章