8

我正在使用颠覆作为 RCS。总是当我的项目的新版本完成时,我会创建它的标签(主干的副本)。有人知道我如何保护这个标记目录不被意外修改吗?

目前作为一种解决方法,我锁定了所有文件。但是这个门槛意味着拥有锁的用户可以编辑文件。

有没有更好的解决方案?

4

3 回答 3

6

您可以使用预提交挂钩来防止用户tags在创建目录后写入目录。

有关示例,请参阅此相关 SO 问题:
SVN pre-commit hook for Avoid changes to tags subdirectories

于 2010-05-21T12:48:56.803 回答
2

You can give read only permission on the tag directories using path-based authorization.

于 2010-05-21T13:18:02.277 回答
0

如果您svn:needs-lock为标记中的所有文件设置属性,则所有文件都将被检出为只读,除非用户明确获取锁。这将(在大多数情况下)防止文件被更改。它不会阻止任何人更改只读标志或获取锁,但它会减少意外修改的机会。

Subversion 本身不能将svn:needs-lock属性应用到文件夹,但在 TortoiseSVN 客户端 (Windows) 中,如果您尝试这样做,它会将属性应用到文件夹和子文件夹中的所有文件。它不允许您从 TortioseSVN 存储库浏览器执行此操作,因此您必须签出标签的工作副本,修改属性,然后签入属性更改。其他客户可能会有所不同;如果您使用的是本机 subversion 命令行客户端,则可能需要合适的 shell 脚本或类似脚本来遍历文件和子文件夹以批量应用属性。如果您尝试更改文件夹中的任何内容,TortoiseSVN 至少会警告您Tags- 但这只是一种约定,而不是强制执行。

svn:needs-lock解决方案有些弱并且很容易被规避,并且不会阻止将新文件添加到标签文件夹中;一个更强大的替代方法是创建一个虚拟用户,并为该用户名中的整个标签获取锁。这将阻止“真正的”用户签入,并且工作副本签出将像设置一样设置其只读属性svn:needs-lock- 不同之处在于他们将无法获得锁,并更改工作副本复制只读属性也不允许签入。

于 2015-01-15T18:20:00.250 回答