Mic*_*man 9 svn version-control branch
分支的颠覆概念似乎侧重于创建整个存储库的[un]稳定分支,以进行开发.是否有创建单个文件分支的机制?
对于用例,请考虑具有多个特定于平台的源(*.c)实现的公共头(*.h)文件.这种类型的分支是永久性的.所有这些分支都会看到正在进行的开发,偶尔会进行跨分支合并.这与通常具有有限寿命的不稳定的发育/稳定释放分支形成鲜明对比.
我不希望分支整个库(便宜与否),因为它会造成维护的不合理量躯干和各分支机构之间不断融合.目前我正在使用ClearCase,它具有不同的分支概念,这使得这很容易.我被要求考虑过渡到SVN,但这种范式差异很重要.我更关心能够为单个文件轻松创建备用版本,而不是像剪切稳定版本分支那样.
您不必分支整个存储库.您可以在项目中创建文件夹分支(例如包含文件夹).正如其他人所说,你也可以只对一个文件进行"复制".获得文件或文件夹的副本后,可以"切换"到分支文件或文件夹以处理分支版本.
如果在存储库中创建单独的分支文件夹,则可以通过服务器端命令复制分支文件:
svn copy svn://server/project/header.h svn://server/branched_files/header.h
然后,您可以切换该文件以使用branches_files存储库路径
遗憾的是,我认为真正的答案是 ClearCase 比 Subversion 更好地处理这种情况。使用 subversion,您必须对所有内容进行分支,但 ClearCase 允许一种“惰性分支”想法,这意味着只有特定组的文件被分支,其余文件仍然遵循主干(或您指定的任何分支)。
此处提供的其他解决方案并不能真正按照您的预期工作,它们只是将文件复制到不同的路径。现在你必须做一些奇怪的事情才能实际使用该文件。
呃,抱歉。这确实不是一个很好的答案。但 Subversion 没有一个好的解决方案。它的模型是分支和合并。
编辑:好的,所以扩展一下 crashmstr 所说的内容。你可以这样做:
svn cp $REP/trunk/file.h $REP/branched_files/file.h
svn co $REP/trunk
svn switch $REP/branched_files/file.h file.h
Run Code Online (Sandbox Code Playgroud)
但是哇!,这很容易出错。每当你执行 svn st 时,你都会看到:
svn st
S file.h
Run Code Online (Sandbox Code Playgroud)
那个有点吵。当您想要在大型源存储库中分支几个文件或模块时,它会开始变得非常混乱。
实际上,这里可能有一个不错的项目,用于模拟 ClearCase 的带有 svn 属性和切换的分支文件之类的东西,围绕 bog 标准 svn 客户端编写一个包装器来处理所有混乱。
| 归档时间: |
|
| 查看次数: |
10453 次 |
| 最近记录: |