Here is my scenario:
Suppose we have an SVN repo with the following contents: my folder my_folder \ file.txt
Now I am creating two checks for this repo, co1 and co2.
In co1 we modify file.txt. In co2 we have:
- svn delete my folder
- svn commit
- Create a new folder called myfolder
- svn add my folder
- svn commit
Now, if I try to upgrade in co1, I get a tree conflict:
A + C myfolder > local edit, incoming delete upon update M + myfolder\file.txt
I want to save my folder and modified file, so I resolve the tree conflict:
svn resolve --accept working folder
Now, if I try to commit, I get "svn: Directory" / myfolder "deprecated." If I try to resolve this using svn up myfolder, I will again get a tree conflict:
A + C folder > local add, incoming add upon update M + myfolder\file.txt
Ok, so we will try svn resolve --access working folder again. But we still cannot commit, we get the same message that "svn: Directory" / myfolder is "out of date", if we do svn up my folder, we return to the last conflict with the tree.
What is the correct procedure for resolving this type of conflict (when do we want to save my folder and its changes)?
EDIT: Windows cmd line script to illustrate:
rmdir /S /QC:\svntest mkdir C:\svntest cd C:\svntest svnadmin create repo svn co file:///c:/svntest/repo co1 svn co file:///c:/svntest/repo co2 cd co1 mkdir folder echo content > folder\file.txt svn add folder svn commit folder -m "" cd C:\svntest\co2 svn up cd C:\svntest\co1 svn del folder svn commit -m "" mkdir folder svn add folder svn commit -m "" cd C:\svntest\co2 echo changed_content > folder\file.txt svn up svn resolve --accept working folder svn commit -m "" svn up folder svn resolve --accept working folder svn commit -m ""
And here is the result of running the script (note the commit failures at the end):
C:\>rmdir /S /QC:\svntest C:\>mkdir C:\svntest C:\>cd C:\svntest C:\svntest>svnadmin create repo C:\svntest>svn co file:///c:/svntest/repo co1 Checked out revision 0. C:\svntest>svn co file:///c:/svntest/repo co2 Checked out revision 0. C:\svntest>cd co1 C:\svntest\co1>mkdir folder C:\svntest\co1>echo content 1>folder\file.txt C:\svntest\co1>svn add folder A folder A folder\file.txt C:\svntest\co1>svn commit folder -m "" Adding folder Adding folder\file.txt Transmitting file data . Committed revision 1. C:\svntest\co1>cd C:\svntest\co2 C:\svntest\co2>svn up A folder A folder\file.txt Updated to revision 1. C:\svntest\co2>cd C:\svntest\co1 C:\svntest\co1>svn del folder D folder\file.txt D folder C:\svntest\co1>svn commit -m "" Deleting folder Committed revision 2. C:\svntest\co1>mkdir folder C:\svntest\co1>svn add folder A folder C:\svntest\co1>svn commit -m "" Adding folder Committed revision 3. C:\svntest\co1>cd C:\svntest\co2 C:\svntest\co2>echo changed_content 1>folder\file.txt C:\svntest\co2>svn up C folder At revision 3. Summary of conflicts: Tree conflicts: 1 C:\svntest\co2>svn resolve --accept working folder Resolved conflicted state of 'folder' C:\svntest\co2>svn commit -m "" Adding folder svn: Commit failed (details follow): svn: Directory '/folder' is out of date C:\svntest\co2>svn up folder C folder At revision 3. Summary of conflicts: Tree conflicts: 1 C:\svntest\co2>svn resolve --accept working folder Resolved conflicted state of 'folder' C:\svntest\co2>svn commit -m "" Adding folder svn: Commit failed (details follow): svn: Directory '/folder' is out of date