Hi,
I have recently made the switch from vss to svn for my projects and
so far I am loving it! Cheers to all the svn devs out there!
I am using a single repository for my projects and I also am tracking
dependencies with vendor branches and vendor binary releases.
My layout looks like this.
/
/projects
/projects/foo
/projects/foo/branches
/projects/foo/tags
/projects/foo/trunk
/projects/foo/trunk/libs
/vendor-bin
/vendor-bin/bar
/vendor-bin/bar/current
/vendor-bin/bar/current/bin
/vendor-bin/bar/current/bin/bar.dll
/vendor-bin/bar/v1.0.0.0
/vendor-bin/bar/v1.0.0.0/bin
/vendor-bin/bar/v1.0.0.0/bin/bar.dll
/vendor-bin/bar/v1.0.0.0/bin/other_lib.dll
/vendor-bin/fubar/current
/vendor-bin/fubar/current/bin
/vendor-bin/fubar/current/bin/bar.dll
/vendor-bin/fubar/current/bin/fubar.dll
What I tried to do, which failed, was add the svn:externals property to the
libs directory to point to specific files.
svn:externals
other_lib.dll http://repo/vendor-bin/bar/current/bin/other_lib.dll
bar.dll http://repo/vendor-bin/fubar/current/bin/bar.dll
fubar.dll http://repo/vendor-bin/fubar/current/bin/fubar.dll
The thought process being that some projects I ALWAYS want on the current
version of the library while other projects may need a specific version.
This also solves an inter dependency issue I have where vendor fubar
may depend on vendor bar and actually have a custom built bar.dll of its
own. I would also like the ability to have project tags using references to
specific revisions of the vendor binaries.
I first tried doing this via a copy, but I realized that once the
vendor-bin/.../current is updated my copy in the project still points to
the old revision.
The only other workaround I can think of is to have sub directories in my
project/lib directory for each vendor. I can then set an external reference
to the whole bin directory from the vendor. My project would then need to
manage references on its own. i.e. I would end up having two bar.dll files
but my project would only reference the bar.dll from /lib/fubar/bar.dll.
This also adds a little more overhead than I would like as many times not
every file from the vendor is required and some of these vendor directories
are huge (50+ MB).
Are there any suggestions or workarounds for this? Has anyone else run into
this and how do you handle it? Is this just an edge case and I am crazy
or could this be a relevant feature request?
Thanks,
Adam
Received on Fri Oct 20 20:10:15 2006