我的团队将 SVN 用于我们的软件平台,并且我们会定期创建标签以帮助保持模块版本的正确性。据我了解,最佳实践是不要在创建标签后对其进行修改。但是,似乎有时诱惑太大,对其中一个标签进行了修改。
有没有办法阻止这类签入,或者至少让它们完全痛苦,以便我们可以自动阻止它们?
谢谢,乔
创建一个预提交钩子,如果标签已经存在,它将拒绝提交。可以在此处找到有关实现挂钩的更多详细信息(请参阅实现存储库挂钩部分):
http://svnbook.red-bean.com/nightly/en/svn.reposadmin.create.html
我认为您正在尝试为非技术问题找到技术解决方案。在弄清楚如何处理它们之前,您必须确定为什么要进行这些签入。如果它们是在团队领导的批准下制定的,那么任何流程都不会阻止它们在未来发生。另一方面,如果这些签入是由认为自己更了解的个别团队成员进行的——那么,您就可以让领导层参与解决流氓开发人员的问题。
只有在整个团队都清楚创建标签后的预期之后,您才能通过技术解决方案(如果需要)强制执行这些预期。
至于如何防止签入-在我看来,最简单的解决方案是,一旦您创建了标签,通过基于路径的授权将其上的安全性设置为对所有人都是只读的。但是请注意,SVN Book 的作者还明确声明了以下关于基于路径的授权:
但请注意,与此功能相关的成本通常是不可见的(而且是可见的!)。在可见类中,服务器需要做更多的工作来保证用户对每条具体路径都有读写权限;在某些情况下,会有非常明显的性能损失。在隐形类别中,考虑您正在创建的文化。大多数时候,虽然某些用户不应该对存储库的某些部分进行更改,但这种社会契约不需要在技术上强制执行。