有没有快速的方法来锁定我的SVN存储库的主干?

srm*_*ark 8 svn version-control

有时候我需要确定没有人承诺到特定分支或我的主干.发布版本和重新集成合并就是一个例子.

SVN"锁定"所有文件是不现实的(很长一段时间,因为项目很大).我也不相信锁定会阻止某人提交新文件.

什么是一个快速的方法,以确保没有人提交任何文件夹,直到我完成我正在做的事情?

谢谢

Ano*_*on. 8

如果您正在进行发布版本,那么您要做的第一件事就是查看特定版本.

如果有人在那段时间内提交其他东西并不重要 - 它不会影响你的构建.

  • 您最好更改您的流程,以便它不需要检入生成的文件.您自动生成的文件不属于源代码管理. (6认同)

si6*_*618 6

我们在为发布版本编译项目时遇到了这个问题,其中构建服务器属性(CruiseControl.NET项目标签)用作程序集和安装程序版本的一部分.

在分支(或标记)工作副本(例如发布版本)时,解决方案很容易.

工作流程:

  1. 结帐树干(或分支)的新工作副本.
  2. 构建您的版本,这会更新文件,使您的工作副本处于修改状态.
  3. 如果构建成功,请将工作副本复制到新分支或标记中.

如果您想在没有分支的情况下提交您的工作副本,那么正如您所说,如果有人修改了存储库的路径,这将失败(或至少不可靠).

解决此问题的方法是使用svn授权控制,将构建服务器用户添加到svn并authz为存储库提供不同的文件.

工作流程:

  1. 替换authz为文件授予构建服务器用户的写访问权限和所有其他用户的读访问权限.
  2. 按照正常情况执行构建.
  3. 替换authz为授予所有用户正常访问权限的文件.

请注意,svn授权允许基于路径的控制,因此您可以将其限制为中继(或任何地方)以减少对用户的影响.

使用类似方法(相同工作流程)的另一种方法是替换预提交挂钩并检查用户; 如果不是您的构建服务器用户执行提交,则拒绝提交(带有相应的错误消息).同样,如果需要,这可以是基于路径的(有一点额外的正则表达式工作).