Hi,

One of my colleagues got a hard-to-decipher error message after
trying to do a merge (trunk -> branch):

svn: E200007: Can't add '{some-path}\svntest\C\B' with URL
'{repo-path}/svn-test/A/B', but with the data from
'{repo-path}/tools/trunk/makecd'
svn: E175002: Error reading spooled REPORT request response

After about an hour of head scratching we figured out that something
like the following had occurred:

------------------------------------
> svn mkdir -m "Creating test structure" {repo-path}/svn-test

Committed revision 971.

> svn co {repo-path}/svn-test .
Checked out revision 971.

> svn mkdir A
A         A

> svn ci -m "Created A"
Adding         A

Committed revision 972.

> cd A

> svn propset svn:externals "B {repo-path}/tools/trunk/makecd" .
property 'svn:externals' set on '.'

> svn ci -m "Created svn:externals"
Sending        .

Committed revision 974.

> svn up
Updating '.':

Fetching external item into 'B':
A    B\bin
A    B\bin\makecd.rb
A    B\bin\mkisofs.exe
Updated external to revision 974.

At revision 974.

> svn cp . ..\C
A         {some-path}\C

> cd ..

> svn ci -m "Branching"
Adding         C

Committed revision 975.

> cd A

> svn propset svn:externals "B/D {repo-path}/tools/trunk/makecd" .
property 'svn:externals' set on '.'

> svn up
Updating '.':

Fetching external item into 'B\D':
A    B\D\bin
A    B\D\bin\makecd.rb
A    B\D\bin\mkisofs.exe
Updated external to revision 975.

Removed external 'B'
Updated to revision 975.

> svn add -N B
A         B

> svn ci -m "Moved external to B/D"
Sending        .
Adding         B

Committed revision 976.

> cd ..\C

> svn merge ..\A
svn: E200007: Can't add '{some-path}\svntest\C\B' with URL
'{repo-path}/svn-test/A/B', but with the data from
'{repo-path}/tools/trunk/makecd'
svn: E175002: Error reading spooled REPORT request response
------------------------------------

I *think* the problem here is that we're both moving the external
B -> B\D and in the same commit also add B. When we then try to
do the merge we first merge the file updates and this detects that
B is already present and under svn controll even though we're
also moving B -> B\D through updating the externals directive.

I would count this as "user error" rather than an "svn error" but
it feels weird that I can create a revision that cannot be merged
without first doing a svn delete (B) in the destination tree.

Thoughts?

Side note: This merge also managed to cause TortoiseSVN to crash.

Best regards
/Daniel Widenfalk

Reply via email to