在开发分支上使用外部标记SVN签出

Ben*_*ner 15 svn tags version-control

我们的大多数项目都使用了很多常用代码.我们(最终)正朝着我们以统一方式管理共享代码的系统迈进.我们将共享代码视为SVN中的单独项目,然后将其作为外部引用.但是,由于将库从一种用户移植到另一种用途不可避免的问题,我们倾向于在项目开发过程中将外部库指向开发分支甚至是主干.

因此,在为发布或内部里程碑标记文件时,我们一直在犯错误.偶尔我们将标记一个项目,而不确保所有外部都已被标记.我们怎样才能解决这个问题?我正在寻找方法来减少错误的可能性或在制作这样的草率标签后恢复/修复.理想情况下,解决方案是使SVN强制执行当前策略的一种方法,但我对任何遇到此类问题的经验感兴趣.

Mar*_*wis 11

我会用两种策略来处理这个问题

  1. 自动化标记.在项目上创建标记之前,创建一个shell脚本,将所有svn:externals更改为固定的版本/发布标记.
  2. 有一个脚本可以检查现有标签的一致性.实际上,即使您将外部链接到主干,也可以在标记时重建状态:因为您知道标记创建的日期和时间,您还可以找出该点处的主干修订版本,并修改外部指向特定版本的主干,或指向标签制作时的当前版本.

此外,您还可以提供一个预提交挂钩,用于检查是否正在创建标记,以及是否所有外部指向固定修订,如果不是这样,则拒绝提交.


Rob*_*man 5

Subversion 客户端版本 1.9 有一个--pin-externals选项svn copy,看起来它会完全满足这里的需要。

感谢danielsh(Daniel Shahaf)在 freenode IRC 频道上#svn的回答。