简体   繁体   中英

Unfixable mixed-revision working copy in SVN

I have a branch checkout that is clean (no modifications), but I cannot reintegrate the trunk back into my branch, because SVN thinks I have a mixed-revision working copy:

c:\myproject> svnversion
2045:2047

The problem seems to be caused by one of my externals:

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

You will note that all of them are directory externals rather than single-file externals, except for jing.jar, which is the same version as what "svnversion" thinks is the lowest range of my working copy, which is supposed to be a clean checkout of r2047.

How do I fix this (besides not using the single-file external)?

I've tried doing updates, fresh checkouts, and svn cleanup, and it still has this problem. I'm using TortoiseSVN 1.6.12

Looks like you're not the only one with this problem.

The fix is to use the equivalent of svn update --ignore-externals

See here: Reintegrate a branch with externals fails in SVN

I came to a different solution, --allow-mixed-revisions :

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

Ignoring externals when updating didn't fix the problem for me even if I did a completely fresh checkout.

Note that this issue has been fixed since Subversion 1.7.0. Since then svnversion (and the merge logic) ignore file externals when determining the revisions.

Even immediately after updating/pushing my entire repository, I got this error message just for trying to rename a folder. Updating the folder again right before renaming fixed this issue for me.

Same problem, my FIX relates to Best answer (but I used switch command instead of update with no externals ).

I describe how to fix it with Eclipse subversion.

在此处输入图像描述

Error in console

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

I first refreshed (Team > Switch) my local branch with Ignore externals option

在此处输入图像描述

Output in console:

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

Then, the merge or its dry run were successful.

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

Complete before/after output in console:

merge --depth=infinity -r133956:133957 svn+ssh://{svnPath} {localPath}
    svn: E195020: Cannot merge into mixed-revision working copy [133 970:133 971]; try updating first
    svn: E195020: Cannot merge into mixed-revision working copy [133 970:133 971]; 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

Inspired by:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM