On 06/12/2012 11:52 PM, C. Michael Pilato wrote:
> Per subversion/svn/conflict-callbacks.c:show_diff():
> 
>   if (desc->merged_file && desc->base_abspath)
>     {
>       /* Show the conflict markers to the user */
>       path1 = desc->base_abspath;
>       path2 = desc->merged_file;
>     }
>   else
>     {
>       /* There's no base file, but we can show the
>          difference between mine and theirs. */
>       path1 = desc->their_abspath;
>       path2 = desc->my_abspath;
>     }
> 
> Neither of those looks especially "weird", so I'm not sure what you were
> seeing in your situation.
> 

In attached test case, I get this with svn 1.7:

[[[
+ svn merge -c5 '^/branch' trunk/
Conflict discovered in '/tmp/diff-full-minimal.57U/wc/trunk/a'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: df
--- /tmp/svn-U7fgdO     Wed Jun 13 13:45:59 2012
+++ /tmp/diff-full-minimal.57U/wc/.svn/tmp/a.tmp        Wed Jun 13 13:45:59 2012
@@ -1,6 +1,10 @@
-apples
+<<<<<<< .working
+r3
+=======
+r5                             <<< r5 conflicts with WC
+>>>>>>> .merge-right.r5
 oranges
 tomatoes
-r4
+cheese                         <<< r4 is also shown in the diff!?
 potatoes
]]]

then postpone and svn diff shows:

[[[
[...]
Index: trunk/a
===================================================================
--- trunk/a     (revision 5)
+++ trunk/a     (working copy)
@@ -1,4 +1,8 @@
+<<<<<<< .working
 r3
+=======
+r5
+>>>>>>> .merge-right.r5
 oranges
 tomatoes
 cheese                           <<< no r4, as expected
]]]

So it's definitely different.

So in the diff-full above, I get an unrelated change of an earlier revision
that took place on the branch (r4) even though I'm cherry-picking only r5
from the branch. Definitely wrong.

~Neels
#!/usr/bin/env bash

## TO MAKE THIS RUN YOUR CUSTOM COMPILED SVN, two simple options:
## 1. Adjust your PATH to point at your custom installed location:
##      export PATH="$HOME/prefix/svn_trunk/bin:$PATH"
## OR
## 2. Uncomment the four lines below to use aliases into your
##    built source tree. The next line is the only line you should
##    need to adjust.
# SVNDIR=/path/to/built_subversion_source_tree
# function svn() { "$SVNDIR/subversion/svn/svn" "$@"; }
# function svnserve() { "$SVNDIR/subversion/svnserve/svnserve" "$@"; }
# function svnadmin() { "$SVNDIR/subversion/svnadmin/svnadmin" "$@"; }

set -e

svn --version
BASE="$(mktemp -d "/tmp/$(basename "$0").XXX")"
echo "BASE = $BASE"
REPOS="$BASE/repos"
WC="$BASE/wc"
URL="file://$REPOS"
svnadmin create "$REPOS"

svn co -q "$URL" "$WC"

set +e
set -x
cd "$WC"

## ACTUAL TEST

mkdir trunk
echo "apples
oranges
tomatoes
cheese
potatoes
" > trunk/a
svn add trunk
svn ci -m1
svn cp -m2 ^/trunk ^/branch
svn up

change() {
  sed -i "s/^$1\$/$2/" a
  svn ci -mm
}

cd trunk
  change apples r3
cd ..

cd branch
  change cheese r4
  change apples r5
cd ..

svn up
echo -e "df\np\n" | svn merge -c5 ^/branch trunk/
#svn merge -c5 ^/branch trunk/
svn diff

## END
set +x
echo "BASE = $BASE"

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to