SVN 如何解析 *文件夹* 上的 "local add, incoming add upon update"?

标签 svn tree-conflict

这是我的场景:

假设我们有一个包含以下内容的 SVN 存储库: 我的文件夹 myfolder\file.txt

现在我创建此存储库的两个 checkout :co1 和 co2。

在co1中我们修改file.txt。 在 co2 中,我们:

  • svn 删除我的文件夹
  • svn 提交
  • 创建一个名为 myfolder 的新文件夹
  • svn 添加我的文件夹
  • svn 提交

现在,如果我尝试在 co1 中进行更新,则会出现树冲突:

A  +  C myfolder >   local edit, incoming delete upon update
M  +    myfolder\file.txt

我想保留我的文件夹和修改后的文件,因此我解决了树冲突:

svn resolve --accept working folder

现在,如果我尝试提交,我会收到“svn: Directory '/myfolder' is out of date”。如果我尝试使用 svn up myfolder 解决此问题,我会再次遇到树冲突:

A  +  C folder >   local add, incoming add upon update
M  +    myfolder\file.txt

好的,我们再次尝试 svn resolve --accept 工作文件夹。但我们仍然无法提交,我们收到相同的消息“svn:目录'/myfolder'已过期”,如果我们执行svn up myfolder,我们会立即回到最后一个树冲突。

解决此类冲突的正确步骤是什么(当我们希望保留 myfolder 及其更改时)?

编辑:Windows cmd 行脚本来说明:

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 ""

这是运行该脚本的输出(请注意最后的提交失败):

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 如何解析 *文件夹* 上的 "local add, incoming add upon update"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3985504/

相关文章:

SVN "is not under version control"Jenkins 失败

java - 由于 svn 切换导致的本地更改

linux - Linux Mandriva 上的 SVN - 导入项目时出错 (svn : E0000013)

svn - 需要关于使用分支和合并回主干的帮助/建议

windows - 将 Subversion 提交消息转换为 Unicode

SVN 看不到原始文件夹和移动版本之间的冲突

svn 合并功能因树冲突而中断

svn - 解决树冲突

svn - 为什么目录的 "local delete, incoming delete upon update"是冲突?