SVN如何解决“本地添加,更新时输入添加".在*文件夹*上? [英] SVN how to resolve "local add, incoming add upon update" on a *folder*?
问题描述
这是我的情况:
假设我们有一个包含以下内容的SVN存储库: 我的文件夹 myfolder \ file.txt
Assume we have an SVN repo with the following content: myfolder myfolder\file.txt
现在,我为此仓库创建两个结帐,即co1和co2.
Now I create two checkouts of this repo, co1 and co2.
在co1中,我们修改file.txt. 在二氧化碳中,我们:
In co1 we modify file.txt. In co2 we:
- svn删除myfolder
- svn提交
- 创建一个名为myfolder的新文件夹
- svn添加myfolder
- svn提交
现在,如果我尝试在co1中进行更新,则会遇到树冲突:
Now if I attempt an update in co1 I get a tree conflict:
A + C myfolder > local edit, incoming delete upon update
M + myfolder\file.txt
我想保留myfolder和修改后的文件,所以我解决了树冲突:
I want to keep myfolder and the modified file, so I resolve the tree conflict:
svn resolve --accept working folder
现在,如果我尝试提交,则会收到"svn:目录'/myfolder'已过期"的信息.如果我尝试使用svn up myfolder解决此问题,则会再次遇到树冲突:
Now if I try to commit, I get "svn: Directory '/myfolder' is out of date". If I try to resolve this using svn up myfolder, I get a tree conflict again:
A + C folder > local add, incoming add upon update
M + myfolder\file.txt
好的,所以我们再次尝试svn resolve --accept工作文件夹.但是我们仍然不能提交,得到的消息是"svn:目录'/myfolder'已过期",如果我们对myfolder进行了svn,我们可以回到最后的树冲突.
Okay, so we try svn resolve --accept working folder again. But we still can't commit, we get the same message that "svn: Directory '/myfolder' is out of date", if we do svn up myfolder, we get right back to the last tree conflict.
解决此类冲突的正确方法是什么(当我们希望保留myfolder及其更改时)?
What is the correct procedure to resolve this type of conflict (when we wish to keep myfolder and its changes)?
Windows cmd行脚本来说明:
Windows cmd line script to illustrate:
rmdir /S /Q C:\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 output of running that script (note the commit failures at the end):
C:\>rmdir /S /Q C:\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
推荐答案
我想通了
svn resolve --accept working PATH_TO_FILE
其结尾应为:
已解决的"PATH_TO_FILE"冲突状态
这篇关于SVN如何解决“本地添加,更新时输入添加".在*文件夹*上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!