2

Jeff Atwood写了关于空格的文章,并建议创建提交钩子来删除行和文件末尾的尾随空格。

我已经搜索过了,但我还没有找到一个使用pre-commit钩子来修改这样的文件的明确示例。您有想要分享的脚本吗?

4

3 回答 3

5

我很确定预提交挂钩不能用于修改正在进行的事务。它只能允许或拒绝提交操作。在您的情况下,您需要检查文件以查看它们是否满足您的空白要求,如果不满足,则提交失败并显示有用的错误消息。您可以使用提交后挂钩来执行您的建议,但这将涉及从挂钩脚本进行第二次提交以修复第一次提交中的错误空白。我认为预提交挂钩方法更好。

于 2009-11-09T20:03:33.083 回答
4

在 subversion 中你不能真正使用提交挂钩来执行此操作,因为如果文件被服务器修改,它将与客户端上的版本不匹配。提交挂钩用于只读事件,例如生成通知消息,或检查文件以查看是否应阻止提交。

请参阅有关提交挂钩的文档

钩子是由某些存储库事件触发的程序,例如创建新修订版或修改未版本化的属性。一些钩子(所谓的“预钩子”)在存储库操作之前运行,并提供一种方法来报告即将发生的事情并完全阻止它发生。其他钩子(“后钩子”)在存储库事件完成后运行,对于执行检查但不修改存储库的任务很有用。每个钩子都被传递了足够的信息来说明该事件是(或曾经是)什么,建议(或已完成)的特定存储库更改以及触发事件的人的用户名。

于 2009-11-09T20:04:02.380 回答
2

不确定您在哪个平台上,但是您可以使用TortoiseSVN使用它的客户端 hooks来做到这一点。

本质上,您将编写一个脚本,该脚本将使用预提交挂钩修改文件。我认为这在构建脚本中更正确:你真的不想提交你甚至没有编译或运行的代码!您删除空格的脚本可能会破坏某些内容,具体取决于上下文/语言。

于 2009-11-09T20:17:59.570 回答