Subversion whitespace-removal commit hook

时间:2009-11-09 19:59:20

标签: svn whitespace svn-hooks

Jeff Atwood wrote about空白并建议创建提交挂钩,删除行和文件末尾的尾随空格。

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

请参阅the documentation on commit hooks

  

钩子是由某些存储库事件触发的程序,例如创建新版本或修改未版本化的属性。一些钩子(所谓的“预钩子”)在存储库操作之前运行,并且提供了一种方法,以便报告将要发生的事情并防止它发生在所有。其他挂钩(“post hooks”)在完成存储库事件后运行,对于执行检查但不修改存储库的任务非常有用。每个钩子都有足够的信息来告诉事件是什么(或者是什么),特定的存储库更改建议(或完成),以及触发事件的人的用户名。

答案 2 :(得分:2)

不确定您所使用的平台,但可以使用TortoiseSVN client-side hooks使用{{3}}执行此操作。

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