Subversion快速解决所有冲突

17

当我有几个冲突时,是否有一种方法可以通过告诉 SVN 保留仓库中的版本来解决所有冲突?不幸的是,我们仍在使用1.4版本。


3
为什么你想这样做呢?比如说,你做了一个200行的更改,但是有人在你之前提交了一个简单地添加了几条注释的文件,导致了冲突。你会因为这个放弃你的200行更改吗? - z -
3
这是一个情况,我知道某个工作副本中的所有更改都是无用的,并且想要使用代码库中的版本。 - nategood
3个回答

38

我认为如果你运行命令svn revert . -R,基本上会撤消所有对你的工作副本所做的更改。如果有冲突的文件,SVN会放弃你的更改并使用你最近更新的版本。

当然,这也会丢失那些没有冲突的文件的更改。


1
SVN 抛弃你的修改并使用原始检出的版本;您仍然需要执行 svn update 以从存储库获取当前 HEAD 版本。 - Roger Lipscombe
@Roger:但如果您有冲突的文件,那么您已经运行了svn up。svn revert会返回svn up从存储库中拉取的版本(除非这已更改,我使用1.6.3进行了测试)。 - Nick Meyer
我已经相应地澄清了我的回答 :) - Nick Meyer
不错的想法。我会暂时保持开放状态,看看是否有更优雅的解决方案。 - nategood
这并不会清除处于冲突状态的文件夹。然而,https://dev59.com/cnNA5IYBdhLWcg3wC5Xh#1109832 的答案可以解决这个问题。 - seven

5

svn update . --accept theirs-full

或者在svn 1.4中没有这个选项吗?

你可以尝试用1.5客户端对1.4服务器进行操作,也许会起作用。


我曾经在1.4服务器上运行了1.5客户端一段时间。在大多数情况下,它可以正常工作,但你会失去自动合并跟踪功能。请参见1.5版本发布说明中的“兼容性问题”(http://subversion.tigris.org/svn_1.5_releasenotes.html)。 - Nick Meyer

1
你可以尝试。
svn st | awk '/^C/ { print $2 }' | xargs svn revert

这会撤销所有存在冲突的文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接