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>
答案 0 :(得分:2)
如果可能的话,你不应该在预提交钩子中这样做。 SVN book说:
虽然钩子脚本几乎可以做任何事情,但是有一个维度 哪个钩子脚本作者应该表现出克制:不要修改一个 使用钩子脚本提交事务。虽然它可能很诱人 使用钩子脚本来自动纠正错误,缺点或 在提交的文件中存在策略违规,这样做可以 引起问题。 Subversion保留了某些位的客户端缓存 存储库数据,如果以这种方式更改提交事务, 那些缓存变得难以辨认。这种不一致可能导致 令人惊讶和意外的行为。而不是修改 事务,你应该简单地验证交易 预提交挂钩并拒绝提交,如果它不符合所需 要求。作为奖励,您的用户将学习细心的价值, 合规的工作习惯。
如果您不想手动包含提交注释,则可以随时编写一个包装svn commit的脚本,并让每个人都使用它。
但是......为什么你的提交信息中根本不需要这个?您正在使用svn:externals,如果使用得当,它们已经记录了所使用的版本。你 正确地使用它们,有明确的修改,不是吗?