On Sat, Feb 27, 2010 at 6:32 PM, Jeff Mott <jeff.mott.or_at_gmail.com> wrote:
> On Sat, Feb 27, 2010 at 4:00 AM, Stefan Sperling <stsp_at_elego.de> wrote:
>> On Fri, Feb 26, 2010 at 09:49:56PM -0800, Jeff Mott wrote:
>>> 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.
>> In some way, yes. In some ways, no :)
>> What it cannot do (and that is a major problem) is that it cannot
>> reliably compare a working copy to a URL in the repository.
>> It can however reliably compare URLs to URLs.
>>> 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?
>> Yes, you can do a 2-URL merge:
>> cd working-copy
>> svn update # straighten potentially mixed-revision working copy
>> svn merge ^/vendor/code-drop-v1 ^/vendor-code-drop-v2 .
>> This says "merge the difference between code-drop-v1 and code-drop-v2
>> into my working copy".
>> The dot at the end is implied if you don't specify it.
> This is exactly what I thought I could do. But what happens is that
> SVN doesn't "update" the working copy files. Instead, it "replace"s
> them. And when it tries to replace a file with customizations, that
> creates a tree conflict.
> Is it supposed to work differently? Perhaps I'm doing something
> wrong... I'd really like to figure this out because this can make my
> life much easier.
>> However, beware of renames the vendor made which affects files that
>> you were modifying. Double-check that these files contain the correct
>> content at their new location.
>> Also note that importing a new vendor drop to a different URL than
>> the old one will waste some disk space, unless you enable "rep-sharing"
>> (see the file db/fsfs.conf in the repository).
I just discovered that using --ignore-ancestry fixed the problem. This
caused SVN to update rather than replace my working copy.
Received on 2010-02-28 06:09:49 CET