Mercurial > hg
annotate hgmerge @ 1700:e2f91e0acbb8
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.
author | Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl> |
---|---|
date | Mon, 06 Feb 2006 17:32:06 -0600 |
parents | 83e8cd97b9f9 |
children | 4ba8fe499df2 |
rev | line source |
---|---|
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 | 2 # |
3 # hgmerge - default merge helper for Mercurial | |
4 # | |
5 # This tries to find a way to do three-way merge on the current system. | |
6 # The result ought to end up in $1. | |
7 | |
8 set -e # bail out quickly on failure | |
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 | 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 | 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 | 67 |
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 | 81 fi |
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 | 121 fi |
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 | 127 fi |
128 fi | |
129 | |
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 | 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 | 135 fi |
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 | 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 | 149 fi |
150 | |
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 | 165 fi |
1700
e2f91e0acbb8
hgmerge: add cleanup functions
Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
parents:
1699
diff
changeset
|
166 failure |
240 | 167 fi |
168 | |
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 |