[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Merge problem: "path not found" error, SVN 1.5.5

From: Paul Burba <ptburba_at_gmail.com>
Date: Thu, 5 Mar 2009 10:37:12 -0500

On Wed, Mar 4, 2009 at 7:08 AM, Marc Strapetz <marc.strapetz_at_syntevo.com> wrote:
> With SVN 1.5.5, for certain conditions merge code accesses "future"
> target revisions and hence can fail with "path not found" error. Example
> (maybe it's not minimal, but it's reproducible in this way for us):
>
> r29: A copied to B
> r30: B/dir/file copied to B/dir2/file
>     B/dir/file removed
> r31: ... non-relevant changes
> r32: ... non-relevant changes
> r33: Merged changes from B back to A,
>     especially A/dir/file gets removed.
> r34: B removed
>
> Now, when checking out A at r32 and trying to perform following merge:
>
>  svn merge http://host/B/dir2/file@33 -r33:29 ./dir/file
>
> it fails with:
>
>  svn: File not found: revision 33, path '/A/dir/file'

Hi Marc,

What do you expect this merge to do (i.e. what is the use case)? You
are trying to reverse merge the move of 'B/dir/file' to 'B/dir2/file'
*directly* into 'A/dir/file'. So effectively you are trying to
reverse merge the addition of a path (r30) directly onto a target
path, which AFAICT has never been supported in Subversion.

I agree the error is not very helpful and probably shouldn't occur at
all. In 1.4.6 this is simply a no-op, is that what you were
expecting?

Paul

> So, although I'm at r32 in my local working copy, svn tries to access
> r33 of my (in repository already removed) working copy file and fails. I
> think r33 shouldn't be accessed in this case and so far we figured out
> that get_full_mergeinfo() in libsvn_client/merge.c:2424 is responsible
> for that problem:
>
>  /* Our underlying APIs can't yet handle the case where the peg
>     revision isn't the youngest of the three revisions.  So we'll
>     just verify that the source in the peg revision is related to the
>     the source in the youngest requested revision (which is all the
>     underlying APIs would do in this case right now anyway). */
>  if (target_rev < start)
>    {
>     ...
>      SVN_ERR(svn_client__repos_locations(&start_url, &start_revision,
>                                          NULL, NULL, ra_session, url,
>                                          &pegrev, &requested,
>                                          &unspec, ctx, pool));
>     ...
>    }
>
> --
> Best regards,
> Marc Strapetz
> _____________
> syntevo GmbH
> www.syntevo.com
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1266499
>

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1272583
Received on 2009-03-05 16:37:43 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.