存储库布局和稀疏检出

时间:2010-04-13 16:02:17

标签: svn

我的团队正在考虑从Clearcase迁移到Subversion,我们正在考虑组织这样的存储库:

 \trunk\project1
 \trunk\project2
 \trunk\project3

 \trunk\staticlib1
 \trunk\staticlib2
 \trunk\staticlib3

 \branches\..
 \tags\..

这里的问题是我们有很多项目(1000+),每个项目都是一个链接在几个常见静态库中的DLL。因此,检查主干中的所有内容是非启动的,因为它将花费太长时间(~2 GB),并且对于分支来说是笨重的。

使用svn:externals为每个项目提取相关文件夹似乎并不理想,因为它会产生多个工作副本 - 一个用于项目,一个用于每个静态库文件夹。如果更改跨越项目和一些静态库,我们也无法进行原子提交。

稀疏检查听起来非常适合这个,因为我们可以编写一个脚本来只提取所需的目录。但是,当我们想要将分支中的更改合并回主干时,我们需要先检查一个完整的主干。

想知道是否有一些建议:1)更好的存储库组织或2)将分支更改合并到稀疏的主干工作副本的方法?

1 个答案:

答案 0 :(得分:3)

关于#2

即使可以使用稀疏检出执行合并,我也不建议这样做。在不完整或浅工作副本中执行的合并会导致创建子树mergeinfo。随着时间的推移,子树mergeinfo会成为一个很大的麻烦。

请参阅:Where Did That Mergeinfo Come From?

我建议始终从源分支的根目录合并到目标分支的完整,干净的工作副本的根目录。在解决任何冲突并完成任何其他必要的验证之后,我将从该工作副本的根目录提交。

如果您是Subversion的新手,我强烈建议阅读重新集成分支,反射合并的内容,以及mergeinfo的工作原理。 Submerged blog有很多很棒的信息,svn book也是如此。