SVN中无法修复的混合版本工作副本

22

我有一个干净的分支检出(没有修改),但是我无法将主干重新整合到我的分支中,因为SVN认为我的工作副本是混合版本:

c:\myproject> svnversion
2045:2047
问题似乎是由我的一个外部依赖引起的:
c:\myproject> svn propget svn:externals tools
-r1448 ^/tools/external/trunk/gandalf/bin gandalf/bin
-r1508 ^/tools/external/trunk/gandalf/include gandalf/include
-r1508 ^/tools/external/trunk/gandalf/lib gandalf/lib
-r1428 ^/tools/external/trunk/jsdb jsdb
-r2045 ^/tools/external/trunk/java/lib/jing.jar jing.jar

请注意,它们全部是目录外部引用而不是单文件外部引用,除了jing.jar之外。jing.jar与"svnversion"认为是我的工作副本最低版本范围相同,这应该是r2047的干净检出。

我该如何解决这个问题(除了不使用单文件外部引用)?

我尝试过更新、重新检出和svn清理,但仍然存在此问题。我使用的是TortoiseSVN 1.6.12。

5个回答

24

1
谢谢,对我来说只需运行“svn update”就可以了。 - franciscorode

7

我想提供一个不同的解决方案,--allow-mixed-revisions

svn merge -c7777 https://repo/app/branches/1.0 . --allow-mixed-revisions

忽略外部依赖更新时,即使我完成了完全新的检出操作,问题仍然没有得到解决。

2
请注意,自Subversion 1.7.0以来,已经修复了此问题。从那时起,svnversion(以及合并逻辑)在确定版本时会忽略文件外部引用。

2
我实际上与svn 1.8.11有完全相同的问题。 - Yodan Tauber

1
即使我更新/推送了整个代码库,但只是尝试重命名一个文件夹就会出现这个错误信息。在重命名之前再次更新文件夹可以解决这个问题。

0

同样的问题,我的解决方案与最佳答案相关(但我使用了switch命令而不是update命令,且没有外部元素)。

我描述了如何使用Eclipse子版本控制来修复它。

enter image description here

控制台错误

merge --dry-run --depth=infinity --force --ignore-ancestry -r133880:133881 svn+ssh://{svnPath} {localPath}
    svn: E195020: Cannot merge into mixed-revision working copy [133963:133967]; try updating first
    svn: E195020: Cannot merge into mixed-revision working copy [133963:133967]; try updating first
    Dry-run merge completed abnormally.

我首先使用忽略外部引用选项刷新了我的本地分支(团队 > 切换)

enter image description here

在控制台中输出:

switch svn+ssh://{svnPath} {localPath} -r HEAD --depth=infinity --ignore-externals --force

然后,合并或其干运行成功。

merge --dry-run --depth=infinity -r133880:133881 svn+ssh://{svnPath} {localPath}
Dry-run merge complete.
    ===== File Statistics: =====
    Updated: 5

在控制台中完整显示前/后输出:

merge --depth=infinity -r133956:133957 svn+ssh://{svnPath} {localPath}
    svn: E195020: Cannot merge into mixed-revision working copy [133970:133971]; try updating first
    svn: E195020: Cannot merge into mixed-revision working copy [133970:133971]; try updating first
    Merge completed abnormally.
switch svn+ssh://{svnPath} {localPath} -r HEAD --ignore-externals --force
    At revision 133971.
merge --depth=infinity -r133956:133957 svn+ssh://{svnPath} {localPath}
    --- Merging r133956 through r133957 into {localPath}
    U   {localPath}/index.html
    Merge info recorded for {localPath}
    Merge complete.
    ===== File Statistics: =====
    Updated: 1
    ==== Property Statistics: =====
    Updated: 1

灵感来源:


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