[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

diff-full shows different changes than are really brought in by cherry pick merge (1.6 & trunk)

From: Neels J Hofmeyr <neels_at_elego.de>
Date: Thu, 29 Sep 2011 02:53:08 +0200

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

This is an archived mail posted to the Subversion Dev mailing list.