如何在预提交钩子中修改提交消息?

时间:2015-01-21 17:57:05

标签: svn

  

Server side hook scripts
  Set up svnperms pre-commit hook
  Use the commit message in a CVS pre-commit hook

我正在通过从中提取多个库来重构项目。这些库被移动到不同的存储库,并通过svn:external检出。

问题是提交到中央存储库不能再解释提交时系统的状态。最初,我通过手动向每个提交Tested with libA:revXXXX, libB:revYYYY, libZ:revZZZZ.附加一行来解决此问题。当然,一旦我的同事加入该项目,这将是不可接受的,并且图书馆开始被用于新项目。

在每次提交时自动执行此操作的正确方法是什么,即,检查所有trunk依赖项的svn:extern的最新版本,并将该信息附加到提交消息?< / p>

1 个答案:

答案 0 :(得分:2)

如果可能的话,你不应该在预提交钩子中这样做。 SVN book说:

  

虽然钩子脚本几乎可以做任何事情,但是有一个维度   哪个钩子脚本作者应该表现出克制:不要修改一个   使用钩子脚本提交事务。虽然它可能很诱人   使用钩子脚本来自动纠正错误,缺点或   在提交的文件中存在策略违规,这样做可以   引起问题。 Subversion保留了某些位的客户端缓存   存储库数据,如果以这种方式更改提交事务,   那些缓存变得难以辨认。这种不一致可能导致   令人惊讶和意外的行为。而不是修改   事务,你应该简单地验证交易   预提交挂钩并拒绝提交,如果它不符合所需   要求。作为奖励,您的用户将学习细心的价值,   合规的工作习惯。

如果您不想手动包含提交注释,则可以随时编写一个包装svn commit的脚本,并让每个人都使用它。

但是......为什么你的提交信息中根本不需要这个?您正在使用svn:externals,如果使用得当,它们已经记录了所使用的版本。你 正确地使用它们,有明确的修改,不是吗?