1

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

4

3 回答 3

2

直接答案是否定的。交易号可以是任何东西。但是,svnlook youngest <repos>将返回您要查找的最新版本。

小心预提交钩子:

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

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

开发人员有 90% 的机会可能在做正确的事情。那个开发负责人可能已经知道这个问题了。而且,如果出现问题,您可以还原更改。

于 2012-01-23T22:11:38.563 回答
0

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

于 2012-01-24T20:08:56.657 回答
0

并在最年轻的基础上加 1。例如:

the_revision=$(svnlook youngest ${REPOS})
((the_revision++))
于 2015-03-10T23:54:29.730 回答