我的团队正在考虑从ClearCase的转移到Subversion和我们正在考虑举办这样的存储库:存储库布局和稀疏检出
\trunk\project1
\trunk\project2
\trunk\project3
\trunk\staticlib1
\trunk\staticlib2
\trunk\staticlib3
\branches\..
\tags\..
这里的问题是,我们有很多的项目(1000+)并且每个项目都是链接到几个常见静态库中的dll。因此,检查中继线中的所有内容都是非启动器,因为它会花费太长的时间(〜2 GB),并且对于分支而言很难实现。
使用svn:externals为每个项目提取相关文件夹似乎并不理想,因为它会生成多个工作副本 - 一个用于项目,一个用于每个静态库文件夹。如果更改跨越项目和一些静态库,我们也无法进行原子提交。
稀疏结帐听起来非常适合这一点,因为我们可以编写一个脚本来只提取所需的目录。但是,当我们想要将分支中的更改合并回主干时,我们需要先检查完整主干。
不知道是否对1)更好的存储库组织或者2)将分支更改合并到稀疏主干工作副本的方法?
我不会放弃那种快速的外部。他们也有优势,您可以为特定的项目标签绑定特定的分支/标签。从可重复地构建旧版本中拿出一些地狱。 – sbi 2010-04-13 16:08:59
嗯挂钩对我们来说不会那么有用,因为开发任务通常会涉及项目和其中一些相关静态库的更改。 – Ying 2010-04-13 16:24:01
虽然外部本身很难自动标记。如果project1有staticlib1的头部外部,你不能只标记project1,你还必须知道把staticlib1放到同一个标记中(假设外部是相对的),或者单独标记它并修改外部(假设它是绝对的)。如果这是解决的,外部是伟大的。 – Eugene 2010-04-13 16:28:48