I'm running Subversion 1.8.0-dev on Windows 7 Pro SP1.
The following steps went through without error on 1.7.x, but they fail with
an error on the last step when run on 1.8.0 (see below for full
reproducible recipe):
1. make a copy (branch) of your trunk
2. Harry checks out the branch in full
3. Sally sparsely checks out the branch with just a subset of subtrees
4. someone adds something in trunk under one of the subtrees that Sally
has excluded
5. someone removes something from trunk under the subtree added in step 4
6. Sally merges trunk into the branch (remember she has the sparse working
copy)
7. Harry merges trunk into the branch
BAM! Harry can't commit the merge because:
svn: E155011: Commit failed (details follow):
svn: E155011: Directory 'C:\testbranch1_userX\B\B1\B1a' is out of date
svn: E160028: '/branches/branch1/B/B1/B1a' is out of date
I suspect this has something to do with one or both of these two issues,
completed in 1.8.0:
- http://subversion.tigris.org/issues/show_bug.cgi?id=4305
- http://subversion.tigris.org/issues/show_bug.cgi?id=4169
Can someone confirm?
Is this a new bug introduced in 1.8.0 or a correction of an oversight in
1.7.x? Either way, what is the workaround? It seems to me that a merge into
a sparse working copy either shouldn't be allowed, or it should work
correctly. In other words, this recipe should either fail on step 6 above
(instead of 7) or it should go all the way through correctly, including
step 7.
Here's the complete recipe for Windows (it creates the repository from
scratch, so the only assumption is that you have a C: drive):
cd /d C:\
svnadmin create test_repo
svn checkout file:///C:/test_repo svntestrepo
cd svntestrepo
md trunk
cd trunk
md B
md C
cd ..
md branches
svn add branches
svn add trunk
svn commit -m ""
svn copy "^/trunk" "^/branches/branch1" -m ""
svn checkout "^/branches/branch1" ..\testbranch1_userX
svn checkout --depth empty "^/branches/branch1" ..\testbranch1_userY
cd ..\testbranch1_userY
svn update --set-depth infinity C
svn checkout "^/trunk" ..\testtrunk
cd ..\testtrunk\B
md B1
cd B1
echo B1 test > test.txt
md B1a
cd B1a
echo B1a test > test.txt
cd ..\..
svn add B1
cd ..
svn commit -m ""
cd C
md C1
cd C1
echo C1 test > test.txt
cd ..
svn add C1
cd ..
svn commit -m ""
cd B\B1
svn delete B1a
cd ..\..
svn commit -m ""
cd ..\testbranch1_userY
svn merge "^/trunk"
svn commit -m ""
cd ..\testbranch1_userX
svn update
svn merge "^/trunk"
svn commit -m ""
Thanks!
Received on 2013-05-14 03:58:36 CEST