使用Subversion防止分支更改的最佳方法

Gar*_*ler 10 svn branch

我们使用Subversion的方式是使用主干,功能分支用于重要功能(> 1天工作)和发布分支.

我们在愉快地合并后删除功能分支,但我们希望保留发布分支,以防错误修复等需要它们.

我们每个人都至少检查项目的根目录,因此我们都有一个完整的目录结构(主干,分支,发布)的副本.尽管我可以教育人们检查他们是否正在对着行李箱进行检查,但他们最终可能会意外地对抗释放分支.

防止这种情况发生的最佳方法是什么?我正在考虑锁定发布分支中的所有文件,这会有帮助吗?还有哪些其他选择?

bou*_*tta 6

为什么每个人都检查出整个SVN层次结构?如果每个人都只检查了他们正在处理的主干/分支,那么它将更不容易出错.您无法检查未检出的分支中的某些内容.

我可以按照Razzie提到的那样练习标记一个版本.


sle*_*ske 5

我不知道有任何内置方法可以主动阻止这种情况。您可能可以使用“存储库预挂接”来实现。那是一个小程序,在每次提交之前运行。如果失败,则整个提交将失败。请参见 Subversion》一书中有关钩子的章节

您的钩子脚本将检查即将提交的路径,并禁止某些路径。这可能会有所帮助:http : //metacpan.org/pod/SVN :: Hooks

也就是说,您确定要执行此操作吗?

我们还使用发布分支,我们确实检查其中的内容,对于无法立即升级到最新版本的客户来说,通常是重要的错误修正。您确定您将永远不需要它吗?


ben*_*din 3

不要浪费时间试图阻止这种情况的发生。如果开发人员在错误的分支上进行了更改,则只需将其恢复即可,并确保将此情况传达给开发人员。

... hack hack hack ... on branch
$ svn ci -m "Feature-1337 implemented" branch
Revision 12345

...oops...

$ svn merge -c12345 branch trunk
$ svn ci -m "moved Feature-1337 from branch to trunk" trunk
$ svn merge -c-12345 branch branch
$ svn ci -m "reverted Feature-1337 on branch. it's intended only for trunk" branch
Run Code Online (Sandbox Code Playgroud)

  • 因此,为了防止工作丢失,我会记下修订版本,从主干合并到分支,合并回主干以捕获分支中所做的更改,然后将分支文件夹恢复到以前的修订版本? (3认同)