Subversion是否与VSS的链接类似?

时间:2010-03-08 21:29:01

标签: svn visual-sourcesafe version-control-migration

我正在将Visual SourceSafe代码存储库迁移到Subversion,我遇到了一个问题。

这是我们当前源代码树的简化布局(在VSS中):

project_root\
  |-libs\
  |-tools\
  |-arch_1\
  |   |-include
  |   |-source
  |-arch_2\
      |-include
      |-source

我的问题出在我们的两个arch_文件夹中。将为不同的硬件体系结构构建每个arch_文件夹,但这两个文件夹的内容几乎完全相同。 arch_2中的文件只是arch_1中文件的VSS链接,只有少数例外情况。通常会将工作签入和签出arch_1文件夹,并且VSS链接确保此处签入的任何代码也在arch_2文件夹中更新。

转向Subversion,有什么能表现得像VSS的链接吗?也就是说,有没有办法让两个文件在不同的文件夹中彼此神奇地相关联,这样它们就会始终彼此同步(对一个文件的更改也会影响另一个)?

注意:我知道这里的正确答案是修复构建系统。大约十年前,这个项目的构建系统拼凑在一起,当时我们的编译器/构建系统不够智能,无法为两个不同的体系结构编译完整的源代码文件夹。感谢make和更新的编译器,我们可以重新编写构建系统,以消除对两个并行源文件夹的依赖性。但是,这需要时间,我们目前还没有(我们正在丢失我们的VSS服务器的许可证,并被迫在相当短的时间内迁移)。我希望找到一个针对这个问题的Subversion解决方案,因为目前,我们花费的时间比重新编写构建系统(这是我的待办事项列表中的下一个)要好得多。#/ p>

感谢您的帮助!

澄清:之前我已经研究过使用外部定义,从我可以看出它们只能在目录级别使用。我正在寻找在文件级别上运行的东西,因为我们的一些目录混合了共享/链接文件和非链接的,特定于体系结构的文件。

4 个答案:

答案 0 :(得分:2)

您可以将arch_1的内容添加为arch_2中的SVN External

<强>更新

File externals are support as of SVN 1.6

  

外部文件

     

从Subversion 1.6开始,您可以添加   单个文件外部到您的工作   使用与for相同的语法进行复制   文件夹。但是,有一些   限制。

     

外部文件的路径必须   将文件放在现有文件中   版本化文件夹。一般来说它是   最直接放置文件的意义   在具有svn:externals的文件夹中   设置,但它可以在版本中   子文件夹,如有必要。相比之下,   目录外部将自动   创建任何中间无版本   文件夹根据需要。

     

外部文件的URL必须在   与URL相同的存储库   将插入外部文件   成;存储库间文件外部   不受支持。

另请参阅:SVN 1.6 Release Notes

答案 1 :(得分:2)

  

之前我已经研究过使用外部定义,从我可以看出它们只能在目录级别上使用。

再看一遍。 Subversion 1.6支持文件级外部: http://subversion.apache.org/docs/release-notes/1.6.html#file-externals

答案 2 :(得分:0)

是的,有一种方法可以至少对目录这样做。这个功能被称为外部http://svnbook.red-bean.com/en/1.0/ch07s03.html已经有一段时间了,因为我已经使用了视觉工作室,但即使回到10年前,VSS链接仍然比SVN外部更好。然而,SVN外部功能正常。您通常最好将项目组织到库中(基本目录中的公共代码),然后您可以让项目使用外部库,而不是将一个项目外部放到另一个项目子目录中。最终SVN将具有文件的外部以及目录http://subversion.tigris.org/issues/show_bug.cgi?id=937

答案 3 :(得分:0)

SVN中最接近这一点的是使用Externals

外部定义允许您:

  

不同的子目录来自存储库中的不同位置,或者可能来自不同的存储库。