----- Original Message ---- > From: Jeff Mott <jeff.mott...@gmail.com> > I've recently needed to track changes for vendor code drops, so I read > the SVN book's vendor branches chapter. But I'm not entirely happy > with part of the procedure, so I'd like to talk it out and, I hope, > find a better way. > The part I hope to improve is when I have a versioned code drop in the > /vendor directory, then the vendor provides a new code drop. The SVN > book suggests that I should copy the new files over top of the files > in my working copy. Then I need to SVN add and delete as needed. I saw > there's a script to ease this process, but I still feel that this > should be easier. > It seems to me that comparing two trees, even unrelated trees, is > something SVN is very good at. So if I have /vendor/code-drop-v1 and > /vendor/code-drop-v2, then it seems SVN should be able to derive the > changes between the two and apply those changes to my working copy. > Can I do this?
Here's what I do: In my repository I have a ThirdParty namespace (e.g. /ThirdParty) under which each Third-Party import has their own namespace (e.g. /ThirdParty/<import>/), with each having its own 'trunk', 'branches', and 'tags'. When I import a new version, it goes into the 'branches'. This then gets merged to 'trunk', and released to 'tags'. My projects then pull against the 'tag' using svn:externals. In this way, I can track the changes that happen from the vendor and even accept or deny some changes if I need to. For example, Qt has a niced add-on for supporting services/daemons - the Qt Service Class (http://doc.trolltech.com/solutions/qtservice/qtservice.html). However, their releases of it are targeted either at Windows OR Unix/Linux/Mac, but I need to support both; so using this method I merge them both together and use the merged result in my source. Personally, I think this helps as it is basically treating the vendor as another project in the repository. Of course, each of my projects have their own trunk/branches/tags, so this might not work for you if you're not doing that too...but you could probably find similar way. HTH, Ben