Selecting "diff-full" doesn't show the correct diff during interactive merge
conflict resolution on a cherry pick. Also happens in 1.6.
A small reproduction script is attached as 'diff-full'.
This is what I get from it, a little whitespace added:
[[[
[...]
+ svn merge -c7 '^/branch' trunk/
Conflict discovered in '/tmp/diff-full.A7B/wc/trunk/a'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
df<CR>
--- /tmp/svn-qww3lB Thu Sep 29 02:27:42 2011
+++ /tmp/diff-full.A7B/wc/.svn/tmp/a.tmp Thu Sep 29 02:27:42 2011
@@ -1,6 +1,11 @@
-apples
-oranges
-tomatoes
+r3
+r5
+r4
cheese
-r6
+potatoes
+<<<<<<< .working
+pasta r5
+=======
+pie r7
+>>>>>>> .merge-right.r7
Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
p<CR>
--- Merging r7 into 'trunk':
C trunk/a
--- Recording mergeinfo for merge of r7 into 'trunk':
U trunk
Summary of conflicts:
Text conflicts: 1
+ svn diff
Index: trunk
===================================================================
--- trunk (revision 8)
+++ trunk (working copy)
Property changes on: trunk
___________________________________________________________________
Added: svn:mergeinfo
Merged /branch:r7
Index: trunk/a
===================================================================
--- trunk/a (revision 8)
+++ trunk/a (working copy)
@@ -4,4 +4,8 @@
cheese
potatoes
+<<<<<<< .working
pasta r5
+=======
+pie r7
+>>>>>>> .merge-right.r7
]]]
The diff upon 'df' drastically differs from 'svn diff' afterwards. 'svn
diff' is right and 'df' is wrong in that shows changes that already are in
in the WC's BASE.
I got much larger such diff divergences, getting completely unrelated diff
chunks, trying to merge -c1174693 to 1.7.x. The second and third attached
files show the differnt outputs on client/externals.c only, i.e.:
cd wc_1.7.x/
svn up # if you're far in the future, try -r 1177000
svn merge -c1174693 \
^/subversion/trunk/subversion/libsvn_client/externals.c \
subversion/libsvn_client/externals.c
df<CR>
p<CR>
svn diff
If I extrapolate above small test, these weird diff chunks should also all
be trivially applied to the WC, but I haven't checked all of them in detail.
They are highly confusing, that's for sure.
Any ideas / stuff I'm not aware of?
~Neels
Received on 2011-09-29 02:53:49 CEST