我有一个我的行李箱的功能分支,并定期将我的行李箱的变化合并到我的分支机构中,一切正常.今天我将分支合并回到主干中,在创建分支后添加到主干的任何文件都被标记为"树冲突".有没有办法在将来避免这种情况?
我不认为这些被正确标记.
如果我有一个Subversion存储库的工作副本,有没有办法用一个命令或工具删除该工作副本中的所有未版本控制或忽略的文件?基本上,我正在寻找SVN模拟git clean.
命令行或GUI解决方案(对于TortoiseSVN)都是可以接受的.
这是我的场景:
假设我们有一个SVN repo,其中包含以下内容:myfolder myfolder\file.txt
现在我创建了两个这个repo,co1和co2的签出.
在co1中我们修改file.txt.在二氧化碳我们:
现在,如果我在co1中尝试更新,我会遇到树冲突:
A + C myfolder > local edit, incoming delete upon update
M + myfolder\file.txt
Run Code Online (Sandbox Code Playgroud)
我想保留myfolder和修改后的文件,所以我解决了树冲突:
svn resolve --accept working folder
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试提交,我会得到"svn:Directory'/ myfolder'已过期".如果我尝试使用svn up myfolder解决此问题,我会再次遇到树冲突:
A + C folder > local add, incoming add upon update
M + myfolder\file.txt
Run Code Online (Sandbox Code Playgroud)
好的,我们再试一次svn resolve --accept工作文件夹.但是我们仍然无法提交,我们得到的结果是"svn:Directory'/ myfolder'已经过时了",如果我们将myfolder设置为svn,我们会回到最后一次树冲突.
解决此类冲突的正确程序是什么(当我们希望保留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 …Run Code Online (Sandbox Code Playgroud) 我接管了一个软件项目并决定使用Tortoise SVN 将所有内容放在SVN(在Assembla上)下.行李箱在ROOT下.因此主干包含整个应用程序(我标记为1.0).对于我的第一个重要功能,我创建了一个名为"dev"的功能分支.
我可以将trunk分支中的更改合并到dev分支中而不会出现问题(因为我正在修复小错误).一旦我的功能完成,我就会合并回主干分支.到目前为止,一切都在发挥作用.ROOT下的新代码正确显示了新功能.但后来我做了一个提交(合并的结果),现在每次我尝试从root或dev分支进行合并时,SVN都抱怨许多文件的"树冲突".甚至是自合并以来我没有触及过的文件.我试图解决冲突,没有成功.
我是唯一的开发人员,因此我并不真正关心对存储库的重大更改.但是,如果可能的话,我仍然希望保留所有文件的历史记录.
解决此问题的最佳方法是什么?有没有办法可以将ROOT主干中的所有最新文件标记为文件的"明确"版本?
[编辑]更多信息
[编辑] elhoim解决方案没有解决我的问题.但是,他对SVN版本问题是正确的.目前(2009-10-28),Assembla正在使用SVN v1.5.1,而我的tortoiseSVN则是v1.6.所以这就是我遇到这么多树冲突的原因.我尝试使用elhoim的链接提供的解决方案并且它不起作用(我在尝试HEAD-to-HEAD合并之前多次尝试了一堆合并.有些文件因此没有转移到根分支).
看到HEAD-to-HEAD合并仍然无效,我决定简单地删除分支文件夹中的所有".svn"文件,将文件复制到ROOT文件夹并进行提交.