You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Kate Ebneter <ka...@ning.com> on 2008/10/15 09:18:20 UTC

"target path does not exist" error when merging (svn 1.5.x)

We just upgraded a fairly substantial repository to svn 1.5.3, which has a
lot of branches, so we were pretty excited about using the new
merge-tracking in 1.5.x. Our branching model is that we create branches for
releases as soon as we start working on them, and periodically merge changes
from the branches in a cascade to the trunk; for example, we might have the
following:



       /------------------------------------> 1.0
      /   /-------------------------------------> 1.1
     /   /   /-------------------------------------> 1.1.1
    /   /   /   /------------------------------------> 1.2
   /   /   /   /
---------------------------------------------------------------> trunk


and we'd merge 1.0 => 1.1 => 1.1.1 => 1.2 => trunk.

Maybe I'm misunderstanding the new svn merge syntax, but I was under the
impression that I could, for example, do something like:

    cd my-1.1-working-copy
    svn merge svn://our.svn.repository/branches/1.0

and, assuming we had merge-tracking somehow primed*, it would do the merge;
but in fact whenever I do that, I get an error: "svn: Target path does not
exist".

A more concrete example, slightly anonymized from the real paths:

$ cd 1.1 # my clean 1.1 working copy
$ svn mergeinfo --show-revs eligible \
     svn://svn.us.com/branches/1.0

r28140
r28141
$ svn merge svn://svn.us.com/branches/1.0
svn: Target path does not exist

If I do 

$ svn merge -c 28141 svn://svn.us.com/branches/1.0

it works fine.

The server was upgraded from 1.4 and I actually did a dump/load because I
wanted to reshard the respository. I should add that it's possible that
there are some rather ... hairy ... renames in the branches at the moment
and if that's the issue, I guess we'll just have to live with it, but I
can't find any clear information on what causes this "Target path does not
exist" error. Any insight would be appreciated.

Thanks,
Kate Ebneter
Build Engineer
Ning, Inc.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

RE: Re: "target path does not exist" error when merging (svn 1.5.x)

Posted by Oliver Wickham <ol...@skinkers.com>.
Hi Kate,

It sounds like you have a similar issue to one that I posted about a
month or so ago. I put our upgrade from 1.4->1.5 on hold until it's
fixed. It is still an issue with 1.5.3. Maybe we can find some
commonality in the problem? I used Wireshark to trace the conversation
with the server which gives a little more information than neon. It
certainly seems that the following command causes my issue:

REPORT /projects/!svn/bc/0/dairy/trunk HTTP/1.1

The problem is that /dairy/trunk was called something different in
earlier revisions. Does anybody know what the zero in the REPORT url
means? Is bc/0 the first revision? Does your error occur on the report
command?

Kate, if you make any headway, can you please update me, and vice versa.

Kind Regards,

Olly


----- My Old Post  -----------------
Hi,

I have been tracking the progress of merging in SVN with excitment. When
1.5.0 was released, I downloaded a copy and tested it with a copy of our
existing repository. I found a couple of merge related issues. When I
looked at the svn issue tracker, I found that there was some fixed
issues in 1.5.1 that sounded similar to the problem I was seeing. I
retested. Some issues went away, but one remains, and remains in 1.5.2.
So...

Our repository is structured as follows:

projects 
        ->dairy
               ->trunk
               ->branches
                         ->branch1, etc

For our tests, I copied the trunk into dairy folder as copy1. The
operation completed successfully. I then modified the copy1 tree with
additions, deletions and modifications, and committed. Next I changed
into the trunk folder and executed

svn merge http://svn.foo.com/projects/dairy/copy1 .

SVN returns "svn: Target path does not exist". It seems that in the past
the trunk folder was renamed, and somehow the merge is getting confused.
It is worth noting that svn:mergeinfo property is empty at this point. I
cleared it out because the python svnmerge upgrade script does not seem
to order revisions correctly, so I deleted the contents of
svn:mergeinfo.

Anyway, so I believe there is a problem with the lookup of the history
when merging. I executed the operation over http and captured the
conversation with the server with wireshark. See below.

I you need any more information, I would be happy to oblige. P.S.
Unfortunately the repository is not public facing.

Regards,

Oliver


----Wireshark---------
OPTIONS /projects/dairy/trunk HTTP/1.1

Host: foo.svn.com

User-Agent: SVN/1.5.2 (r32768) neon/0.28.3

Keep-Alive: 

Connection: TE, Keep-Alive

TE: trailers

DAV: http://subversion.tigris.org/xmlns/dav/svn/depth

DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo

DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops

Accept-Encoding: gzip



HTTP/1.1 401 Authorization Required

Date: Wed, 03 Sep 2008 14:22:20 GMT

Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.8g DAV/2 SVN/1.5.2
mod_fastcgi/2.4.6

WWW-Authenticate: Basic realm="Subversion repository"

Content-Length: 401

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: text/html; charset=iso-8859-1



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head>
<title>401 Authorization Required</title> </head><body>
<h1>Authorization Required</h1> <p>This server could not verify that you
are authorized to access the document requested.  Either you supplied
the wrong credentials (e.g., bad password), or your browser doesn't
understand how to supply the credentials required.</p> </body></html>
OPTIONS /projects/dairy/trunk HTTP/1.1

Host: foo.svn.com

User-Agent: SVN/1.5.2 (r32768) neon/0.28.3

Keep-Alive: 

Connection: TE, Keep-Alive

TE: trailers

DAV: http://subversion.tigris.org/xmlns/dav/svn/depth

DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo

DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops

Accept-Encoding: gzip

Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==



HTTP/1.1 200 OK

Date: Wed, 03 Sep 2008 14:22:20 GMT

Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.8g DAV/2 SVN/1.5.2
mod_fastcgi/2.4.6

DAV: 1,2

DAV: version-control,checkout,working-resource

DAV: merge,baseline,activity,version-controlled-collection

DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo

DAV: http://subversion.tigris.org/xmlns/dav/svn/depth

DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops

DAV: http://subversion.tigris.org/xmlns/dav/svn/partial-replay

DAV: <http://apache.org/dav/propset/fs/1>

MS-Author-Via: DAV

Allow:
OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNL
OCK,CHECKOUT

Content-Length: 0

Keep-Alive: timeout=5, max=99

Connection: Keep-Alive

Content-Type: text/plain



PROPFIND /projects/dairy/trunk HTTP/1.1

Host: foo.svn.com

User-Agent: SVN/1.5.2 (r32768) neon/0.28.3

Connection: TE

TE: trailers

Content-Type: text/xml

Accept-Encoding: gzip

Depth: 0

DAV: http://subversion.tigris.org/xmlns/dav/svn/depth

DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo

DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops

Content-Length: 300

Accept-Encoding: gzip

Authorization: Basic b2xpdmVyd2lja2hhbTpGb29MMmlpMw==



<?xml version="1.0" encoding="utf-8"?><propfind
xmlns="DAV:"><prop><version-controlled-configuration
xmlns="DAV:"/><resourcetype xmlns="DAV:"/><baseline-relative-path
xmlns="http://subversion.tigris.org/xmlns/dav/"/><repository-uuid
xmlns="http://subversion.tigris.org/xmlns/dav/"/></prop></propfind>HTTP/
1.1 207 Multi-Status

Date: Wed, 03 Sep 2008 14:22:20 GMT

Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.8g DAV/2 SVN/1.5.2
mod_fastcgi/2.4.6

Content-Length: 698

Content-Type: text/xml; charset="utf-8"



<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:"
xmlns:ns1="http://subversion.tigris.org/xmlns/dav/" xmlns:ns0="DAV:">
<D:response xmlns:lp1="DAV:"
xmlns:lp3="http://subversion.tigris.org/xmlns/dav/">
<D:href>/projects/dairy/trunk/</D:href>
<D:propstat>
<D:prop>
<lp1:version-controlled-configuration><D:href>/projects/!svn/vcc/default
</D:href></lp1:version-controlled-configuration>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp3:baseline-relative-path>dairy/trunk</lp3:baseline-relative-path>
<lp3:repository-uuid>82e2581b-47fa-0310-bd36-f8837200dfe4</lp3:repositor
y-uuid>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
PROPFIND /projects/!svn/vcc/default HTTP/1.1

Host: foo.svn.com

User-Agent: SVN/1.5.2 (r32768) neon/0.28.3

Connection: TE

TE: trailers

Content-Type: text/xml

Accept-Encoding: gzip

Label: 0

Depth: 0

DAV: http://subversion.tigris.org/xmlns/dav/svn/depth

DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo

DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops

Content-Length: 148

Accept-Encoding: gzip

Authorization: Basic b2xpdmVyd2lja2hhbTpGb29MMmlpMw==



<?xml version="1.0" encoding="utf-8"?><propfind
xmlns="DAV:"><prop><baseline-collection xmlns="DAV:"/><version-name
xmlns="DAV:"/></prop></propfind>HTTP/1.1 207 Multi-Status

Date: Wed, 03 Sep 2008 14:22:20 GMT

Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.8g DAV/2 SVN/1.5.2
mod_fastcgi/2.4.6

Vary: Label

Content-Length: 449

Content-Type: text/xml; charset="utf-8"



<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> <D:response
xmlns:lp1="DAV:" xmlns:lp3="http://subversion.tigris.org/xmlns/dav/">
<D:href>/projects/!svn/bln/0</D:href>
<D:propstat>
<D:prop>
<lp1:baseline-collection><D:href>/projects/!svn/bc/0/</D:href></lp1:base
line-collection>
<lp1:version-name>0</lp1:version-name>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
REPORT /projects/!svn/bc/0/dairy/trunk HTTP/1.1

Host: foo.svn.com

User-Agent: SVN/1.5.2 (r32768) neon/0.28.3

Connection: TE

TE: trailers

Content-Type: text/xml

Accept-Encoding: gzip

DAV: http://subversion.tigris.org/xmlns/dav/svn/depth

DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo

DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops

Content-Length: 130

Accept-Encoding: gzip

Authorization: Basic b2xpdmVyd2lja2hhbTpGb29MMmlpMw==



<S:mergeinfo-report
xmlns:S="svn:"><S:revision>0</S:revision><S:inherit>explicit</S:inherit>
<S:path></S:path></S:mergeinfo-report>HTTP/1.1 404 Not Found

Date: Wed, 03 Sep 2008 14:22:20 GMT

Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.8g DAV/2 SVN/1.5.2
mod_fastcgi/2.4.6

Content-Length: 228

Content-Type: text/html; charset=iso-8859-1



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /projects/!svn/bc/0/dairy/trunk was not found on
this server.</p> </body></html>






---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org


Re: "target path does not exist" error when merging (svn 1.5.x)

Posted by Kate Ebneter <ka...@ning.com>.
After considerable digging around, I tried debugging this by setting
neon-debug-mask=130 in my servers file and looking at the http requests
being made during the svn merge (by using http: paths to the server, of
course). This reveals that the merge is hanging up on a very old revision.
at a point where the original trunk/branches/tags structure was deleted and
replaced (! -- this happened before I was here). That is, to re-use my
concrete example,

$ cd 1.1 # my clean 1.1 working copy
$ svn mergeinfo --show-revs eligible \
     http://svn.us.com/repos/branches/1.0
r28140
r28141
$ svn merge http://svn.us.com/branches/1.0
:
<many lines elided>
:
Sending request-line and headers:
Sending request body:
Body block (322 bytes):
[<S:update-report send-all="false"
xmlns:S="svn:"><S:src-path>http://svn.us.com/trunk</S:src-path><S:target-rev
ision>8897</S:target-revision><S:dst-path>http://svn.us.com/tmp/trunk</S:dst
-path><S:depth>infinity</S:depth><S:entry rev="8896" depth="infinity"
></S:entry></S:update-report>]
Request sent; retry is 1.
[status-line] < HTTP/1.1 500 Internal Server Error
[hdr] Date: Thu, 16 Oct 2008 23:00:48 GMT
Header Name: [date], Value: [Thu, 16 Oct 2008 23:00:48 GMT]
[hdr] Server: Apache/2.2.4 (Unix) SVN/1.5.3 mod_ssl/2.2.4 OpenSSL/0.9.8d
DAV/2
Header Name: [server], Value: [Apache/2.2.4 (Unix) SVN/1.5.3 mod_ssl/2.2.4
OpenSSL/0.9.8d DAV/2]
[hdr] Content-Length: 222
Header Name: [content-length], Value: [222]
[hdr] Connection: close
Header Name: [connection], Value: [close]
[hdr] Content-Type: text/xml; charset="utf-8"
Header Name: [content-type], Value: [text/xml; charset="utf-8"]
[hdr] 
End of headers.
Reading 222 bytes of response body.
Got 222 bytes.
Read block (222 bytes):
[<?xml version="1.0" encoding="utf-8"?>
<D:error xmlns:D="DAV:" xmlns:m="http://apache.org/dav/xmlns"
xmlns:C="svn:">
<C:error/>
<m:human-readable errcode="160005">
Target path does not exist
</m:human-readable>
</D:error>
]
Running post_send hooks
Request ends, status 500 class 5xx, error line:
500 Internal Server Error
Running destroy hooks.
Request ends.
svn: Target path does not exist
ne_session_destroy called.
ne_session_destroy called.
ne_session_destroy called.
ne_session_destroy called.

r8897 was the deletion of the existing (at that time) branches/tags/trunk.
Obviously from a merge perspective that's a rather rude thing to have done.
:-)

I have a couple of questions, I suppose -- any svn developers here
listening?? (1) Why does this produce the "Target path does not exist"
error? It's not clear to me at all, but I admit I haven't dug into the
source code that deeply yet. (2) Is there anything I can do to placate svn
and be able to perform merges without having to track them myself? (3) Is
this possibly a bug? (OK, that was three questions...) I can try to create a
smaller reproducible case.

I am seeing something similar in one branch only of a different repository
(we have six...), but the same violence was not done to that repo. In that
case, the offending revision seems to be an innocuous branch creation.

Thanks for any help,
Kate Ebneter
Build Engineer
Ning, Inc.

On 10/15/08 2:18 AM, "Kate Ebneter" <ka...@ning.com> wrote:

> We just upgraded a fairly substantial repository to svn 1.5.3, which has a
> lot of branches, so we were pretty excited about using the new
> merge-tracking in 1.5.x. Our branching model is that we create branches for
> releases as soon as we start working on them, and periodically merge changes
> from the branches in a cascade to the trunk; for example, we might have the
> following:
> 
> 
> 
>        /------------------------------------> 1.0
>       /   /-------------------------------------> 1.1
>      /   /   /-------------------------------------> 1.1.1
>     /   /   /   /------------------------------------> 1.2
>    /   /   /   /
> ---------------------------------------------------------------> trunk
> 
> 
> and we'd merge 1.0 => 1.1 => 1.1.1 => 1.2 => trunk.
> 
> Maybe I'm misunderstanding the new svn merge syntax, but I was under the
> impression that I could, for example, do something like:
> 
>     cd my-1.1-working-copy
>     svn merge svn://our.svn.repository/branches/1.0
> 
> and, assuming we had merge-tracking somehow primed*, it would do the merge;
> but in fact whenever I do that, I get an error: "svn: Target path does not
> exist".
> 
> A more concrete example, slightly anonymized from the real paths:
> 
> $ cd 1.1 # my clean 1.1 working copy
> $ svn mergeinfo --show-revs eligible \
>      svn://svn.us.com/branches/1.0
> 
> r28140
> r28141
> $ svn merge svn://svn.us.com/branches/1.0
> svn: Target path does not exist
> 
> If I do 
> 
> $ svn merge -c 28141 svn://svn.us.com/branches/1.0
> 
> it works fine.
> 
> The server was upgraded from 1.4 and I actually did a dump/load because I
> wanted to reshard the respository. I should add that it's possible that
> there are some rather ... hairy ... renames in the branches at the moment
> and if that's the issue, I guess we'll just have to live with it, but I
> can't find any clear information on what causes this "Target path does not
> exist" error. Any insight would be appreciated.
> 
> Thanks,
> Kate Ebneter
> Build Engineer
> Ning, Inc.
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: users-help@subversion.tigris.org
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org