在预提交中确定事务的基本修订

时间:2012-01-23 21:22:24

标签: svn pre-commit-hook svnlook

我正在编写一个预提交钩子,我希望在事务之前根据文件的内容强制实施一些规则。因此,当事务开始时,我想svnlook cat标记为“U”,“UU”或“D”的任何文件的内容,而不用挂起的更改。我是否可以安全地获取提供的事务标识符(预先提交的第二个参数)并删除破折号及其后面的任何字符并考虑“基本修订版”?有没有更好的方法来获取这些信息?

3 个答案:

答案 0 :(得分:2)

直接答案是。交易号码可以是任何东西。但是,svnlook youngest <repos>将返回您应该查找的最新修订版。

小心预提交钩子:

  • 确保您没有做一些需要很长时间的事情。开发人员必须等待预提交挂钩才能完成,如果你花7到10秒处理一些事情,那么开发人员会非常沮丧。
  • 您不能(也不应该)更改提交的数据。如果它符合您的要求,请允许提交。如果没有,请不要允许提交。
  • 确保您不会停止可能是合法的活动。例如,某些站点使用预提交挂钩来阻止某人提交更改,除非他们在提交消息中放入票证,并且该提交消息是分配给该开发人员的票证,并且该票证处于打开状态。您是否可以想象当开发人员因为将票证分配给其他人而无法提交更改时所发生的欢闹,并且唯一能够更改该任务的人员本周休假?

有时候最好使用持续集成服务器来验证提交,而不是预提交或提交后挂钩。例如,允许开发人员提交文件,但如果开发人员不在正确的组中,则可以通过电子邮件发送开发人员。

开发人员可能有90%的可能做正确的事情。那个开发主管可能已经知道了这个问题。并且,如果存在问题,您可以恢复更改。

答案 1 :(得分:0)

在提交修订之前,基本修订尚未确定。如果另一个更改未更改相同的节点,则可以在提交过程中提交它。只有提交的最后部分是独占的。

答案 2 :(得分:0)

并向最年轻的人添加1。 例如:

the_revision=$(svnlook youngest ${REPOS})
((the_revision++))