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" <kate_at_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_at_subversion.tigris.org
> For additional commands, e-mail: users-help_at_subversion.tigris.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-10-17 01:29:49 CEST