----- 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


Reply via email to