hgmerge
author Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
Mon, 06 Feb 2006 17:32:06 -0600
changeset 1700 e2f91e0acbb8
parent 1699 83e8cd97b9f9
child 1701 4ba8fe499df2
permissions -rwxr-xr-x
hgmerge: add cleanup functions This patch adds functions cleanup, success and failure. The last two of these should be used instead of exit. Current code was changed to use them. It also moves $HGTMP to the top of the file (it's used in the cleanup function), changes the comment and removes now unneeded trap in the diff+patch merge.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
544
3d4d5f2aba9a Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 306
diff changeset
     1
#!/bin/sh
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     2
#
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     3
# hgmerge - default merge helper for Mercurial
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     4
#
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     5
# This tries to find a way to do three-way merge on the current system.
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     6
# The result ought to end up in $1.
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     7
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     8
set -e # bail out quickly on failure
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
     9
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    10
LOCAL="$1"
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    11
BASE="$2"
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    12
OTHER="$3"
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
    13
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    14
if [ -z "$EDITOR" ]; then
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    15
    EDITOR="vi"
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    16
fi
304
38fb7d23b78d Use vi if $EDITOR is unset.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 303
diff changeset
    17
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    18
# find decent versions of our utilities, insisting on the GNU versions where we
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    19
# need to
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    20
MERGE=merge
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    21
DIFF3=gdiff3
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    22
DIFF=gdiff
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    23
PATCH=gpatch
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    24
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    25
type $MERGE >/dev/null 2>&1 || MERGE=
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    26
type $DIFF3 >/dev/null 2>&1 || DIFF3=diff3
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    27
type $DIFF  >/dev/null 2>&1 || DIFF=diff
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    28
type $PATCH >/dev/null 2>&1 || PATCH=patch
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    29
$DIFF3 --version >/dev/null 2>&1 || DIFF3=
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    30
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    31
# find optional visual utilities
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    32
FILEMERGE='/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge'
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    33
KDIFF3=kdiff3
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    34
TKDIFF=tkdiff
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    35
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    36
type $FILEMERGE >/dev/null 2>&1 || FILEMERGE=
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    37
type $KDIFF3    >/dev/null 2>&1 || KDIFF3=
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    38
type $TKDIFF    >/dev/null 2>&1 || TKDIFF=
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    39
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    40
# temporary directory for diff+patch merge
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    41
HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$"
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    42
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    43
# put all your required cleanup here
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    44
cleanup() {
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    45
    rm -f "$LOCAL.orig"
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    46
    rm -rf "$HGTMP"
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    47
}
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    48
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    49
# functions concerning program exit
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    50
success() {
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    51
    cleanup
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    52
    exit 0
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    53
}
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    54
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    55
failure() {
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    56
    echo "merge failed" 1>&2
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    57
    cp "$LOCAL.orig" "$LOCAL"
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    58
    cleanup
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    59
    exit 1
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    60
}
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    61
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    62
# Clean up when interrupted
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    63
trap "failure" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    64
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
    65
# Back up our file
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    66
cp "$LOCAL" "$LOCAL.orig"
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
    67
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
    68
# Attempt to do a non-interactive merge
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    69
if [ -n "$MERGE" ]; then
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    70
    $MERGE "$LOCAL" "$BASE" "$OTHER" 2> /dev/null && success
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    71
    cp "$LOCAL.orig" "$LOCAL"
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    72
elif [ -n "$DIFF3" ]; then
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    73
    echo $DIFF3 -m "$LOCAL.orig" "$BASE" "$OTHER"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    74
    $DIFF3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" && success
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    75
    if [ $? -eq 2 ]; then
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    76
        echo "$DIFF3 failed! Exiting." 1>&2
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    77
        cp "$LOCAL.orig" "$LOCAL"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    78
        failure
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
    79
    fi
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
    80
    cp "$LOCAL.orig" "$LOCAL"
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
    81
fi
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
    82
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    83
# on MacOS X try FileMerge.app, shipped with Apple's developer tools
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    84
# TODO: make proper temp files. foo.orig and foo.link are dangerous
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    85
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
    86
if [ -n "$FILEMERGE" ]; then
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    87
    cp "$LOCAL.orig" "$LOCAL"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    88
    ln "$LOCAL" "$LOCAL.link"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    89
    # filemerge prefers the right by default
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    90
    if ! "$FILEMERGE" -left "$OTHER" -right "$LOCAL" -ancestor "$BASE" -merge "$LOCAL"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    91
    then
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    92
        echo "FileMerge failed to launch"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    93
        failure
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    94
    fi
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    95
    if ! test "$LOCAL" -ef "$LOCAL.link"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    96
    then
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    97
        rm "$LOCAL.orig" "$LOCAL.link"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
    98
        success
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
    99
    else
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   100
        rm "$LOCAL.link"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   101
        echo "$LOCAL is unchanged. Was the merge successful?"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   102
        select answer in yes no
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   103
        do
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   104
            if test "$answer" == "yes"
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   105
            then
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   106
                rm "$LOCAL.orig"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   107
                success
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   108
            else
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   109
                failure
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   110
            fi
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   111
        done
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   112
        failure
1664
4338e33c973b Safer version of FileMerge merge
Brendan Cully <brendan@kublai.com>
parents: 1647
diff changeset
   113
    fi
1647
64a1169c927d Use of opendiff as merge program on MacOS X
Christian Ebert <blacktrash@gmx.net>
parents: 1434
diff changeset
   114
fi
64a1169c927d Use of opendiff as merge program on MacOS X
Christian Ebert <blacktrash@gmx.net>
parents: 1434
diff changeset
   115
303
15a9e55e7ea5 Check if $DISPLAY is set before using tkdiff or kdiff3.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
   116
if [ -n "$DISPLAY" ]; then
15a9e55e7ea5 Check if $DISPLAY is set before using tkdiff or kdiff3.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
   117
    # try using kdiff3, which is fairly nice
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
   118
    if [ -n "$KDIFF3" ]; then
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   119
	$KDIFF3 --auto "$BASE" "$LOCAL" "$OTHER" -o "$LOCAL" || failure
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   120
	success
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   121
    fi
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   122
303
15a9e55e7ea5 Check if $DISPLAY is set before using tkdiff or kdiff3.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
   123
    # try using tkdiff, which is a bit less sophisticated
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
   124
    if [ -n "$TKDIFF" ]; then
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   125
	$TKDIFF "$LOCAL" "$OTHER" -a "$BASE" -o "$LOCAL" || failure
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   126
	success
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   127
    fi
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   128
fi
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   129
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   130
# Attempt to do a merge with $EDITOR
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
   131
if [ -n "$MERGE" ]; then
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   132
    echo "conflicts detected in $LOCAL"
1699
83e8cd97b9f9 hgmerge: add and use more tool variables
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1664
diff changeset
   133
    $MERGE "$LOCAL" "$BASE" "$OTHER" 2>/dev/null || $EDITOR "$LOCAL"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   134
    success
242
a2edb4481f19 hgmerge: use diff3 if available
mpm@selenic.com
parents: 240
diff changeset
   135
fi
a2edb4481f19 hgmerge: use diff3 if available
mpm@selenic.com
parents: 240
diff changeset
   136
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   137
if [ -n "$DIFF3" ]; then
242
a2edb4481f19 hgmerge: use diff3 if available
mpm@selenic.com
parents: 240
diff changeset
   138
    echo "conflicts detected in $LOCAL"
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   139
    $DIFF3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" || {
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   140
        case $? in
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   141
            1)
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   142
                $EDITOR "$LOCAL" ;;
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   143
            2)  echo "$DIFF3 failed! Exiting." 1>&2
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   144
                cp "$LOCAL.orig" "$LOCAL"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   145
                failure ;;
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   146
        esac
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   147
        success
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   148
    }
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   149
fi
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   150
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   151
# attempt to manually merge with diff and patch
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   152
if [ -n "$DIFF" -a -n "$PATCH" ]; then
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
   153
829
764b0350acb8 Shortened hgmerge a little bit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 828
diff changeset
   154
    (umask 077 && mkdir "$HGTMP") || {
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   155
	echo "Could not create temporary directory $HGTMP" 1>&2
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   156
	failure
829
764b0350acb8 Shortened hgmerge a little bit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 828
diff changeset
   157
    }
795
cd0ad12d9e42 Remove usage of ${par:-word}, which and mktemp. Quote filenames.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 547
diff changeset
   158
1434
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   159
    $DIFF -u "$BASE" "$OTHER" > "$HGTMP/diff" || :
696851b1bba9 Fix use of diff(1) triggered by set -e.
levon@movementarian.org
parents: 839
diff changeset
   160
    if $PATCH "$LOCAL" < "$HGTMP/diff"; then
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   161
	success
829
764b0350acb8 Shortened hgmerge a little bit.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 828
diff changeset
   162
    else
830
ca080d28d0af If rejects are empty after using the editor, merge with diff+patch was ok.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 829
diff changeset
   163
	# If rejects are empty after using the editor, merge was ok
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   164
	$EDITOR "$LOCAL" "$LOCAL.rej" && test -s "$LOCAL.rej" || success
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   165
    fi
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   166
    failure
240
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   167
fi
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   168
737c66b68290 Replace tkmerge with hgmerge
mpm@selenic.com
parents:
diff changeset
   169
echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!"
1700
e2f91e0acbb8 hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 1699
diff changeset
   170
failure