我正在将 Visual SourceSafe 代码存储库迁移到 Subversion,但遇到了问题。
这是我们当前源代码树的简化布局(在 VSS 中):
project_root\
|-libs\
|-tools\
|-arch_1\
| |-include
| |-source
|-arch_2\
|-include
|-source
我的问题在我们的两个arch_
文件夹中。每个arch_
文件夹将针对不同的硬件架构构建,但两个文件夹的内容实际上是相同的。中的文件arch_2
只是 中的文件的 VSS 链接arch_1
,只有少数例外。工作通常签入和签出arch_1
文件夹,VSS 链接确保此处签入的任何代码也在arch_2
文件夹中更新。
转到 Subversion,是否有任何行为类似于 VSS 的链接?也就是说,有没有办法让两个文件在不同的文件夹中神奇地相互关联,这样它们总是相互同步(对一个文件的更改也会影响另一个文件)?
注意:我知道这里的正确答案是修复构建系统。这个项目的构建系统大约是在十年前拼凑起来的,那时我们的编译器/构建系统还不够智能,无法为两个不同架构编译包含源代码的同一个文件夹。感谢make
和更新的编译器,我们可以重新编写构建系统来消除对两个并行源文件夹的依赖。但是,这将需要我们目前没有的时间(我们正在失去对 VSS 服务器的许可,并被迫在相当短的时间内进行迁移)。我希望找到解决此问题的 Subversion 解决方案,因为目前,我们的时间花在使迁移顺利进行比重新编写构建系统(这是我的待办事项列表中的下一个!)上要好得多。
感谢您的帮助!
澄清:我之前研究过使用外部定义,据我所知,它们只能在目录级别使用。我正在寻找在文件级别上运行的东西,因为我们的一些目录混合了共享/链接文件和非链接的特定于体系结构的文件。