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!