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:\mypr开发者_如何学编程oject> 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:
- (current best answser) https://stackoverflow.com/a/5112819/912046
- Ignore a svn:"property" while doing svn merge
- Reintegrate a branch with externals fails in SVN
精彩评论