I am migrating a Visual SourceSafe code repository to Subversion and I am running into a problem.
Here is a simplified layout of our current source code tree (in VSS):
project_root\
|-libs\
|-tools\
|-arch_1\
| |-include
| |-source
|-arch_2\
|-include
|-source
My problem is in our two arch_
folders. Each arch_
folder will be built for a different hardware architecture, but the contents of the two folders are practically identical. The files in arch_2
are merely VSS links to the files in arch_1
, with only a small handful of exceptions. Work is generally checked into and out of the arch_1
folder, and the VSS links make sure that any code checked in here is updated in the arch_2
folder as well.
Moving to Subversion, is there anything that will behave like VSS's links? That is, is there a way to have two files in separate folders magically associated with one another such that they will always be in sync with each other (changes to one will affect the other as well)?
Note: I know the correct answer here is to fix the build system. The build system on this project was pieced together roughly a decade ago, back when our compiler/build system wasn't intelligent enough to compile the same folder full of source code for two different architectures. Thanks to make
and updated compilers, we can re-write the build system to eliminate this dependency on two parallel source folders. However, this will take time that we don't have at the moment (we are losing our license to our VSS server and are being forced to migrate on rather short notice). I am hoping to find a Subversion solution to this problem because at the moment, our time would be much better spent making the migration run smoothly than re-writing the build system (which is next on my to-do list!).
Thank you for your help!
Clarification: I have looked into using externals definitions before, and from what I can tell they can only be used on the directory level. I am looking for something that operates on the file level, as some of our directories have a mix of shared/linked files and non-linked, architecture-specific files.