Mercurial > hg > mercurial-crew-with-dirclash
comparison hgmerge @ 829:764b0350acb8
Shortened hgmerge a little bit.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Thu, 04 Aug 2005 17:16:41 +0100 |
parents | 7a6acd56cd5a |
children | ca080d28d0af |
comparison
equal
deleted
inserted
replaced
828:7a6acd56cd5a | 829:764b0350acb8 |
---|---|
18 # Back up our file | 18 # Back up our file |
19 cp "$LOCAL" "$LOCAL.orig" | 19 cp "$LOCAL" "$LOCAL.orig" |
20 | 20 |
21 # Attempt to do a non-interactive merge | 21 # Attempt to do a non-interactive merge |
22 if type merge > /dev/null 2>&1; then | 22 if type merge > /dev/null 2>&1; then |
23 if merge "$LOCAL" "$BASE" "$OTHER" 2> /dev/null; then | 23 merge "$LOCAL" "$BASE" "$OTHER" 2> /dev/null && exit 0 |
24 # success! | |
25 exit 0 | |
26 fi | |
27 cp "$LOCAL.orig" "$LOCAL" | 24 cp "$LOCAL.orig" "$LOCAL" |
28 elif type diff3 > /dev/null 2>&1; then | 25 elif type diff3 > /dev/null 2>&1; then |
29 if diff3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" ; then | 26 diff3 -m "$LOCAL.orig" "$BASE" "$OTHER" > "$LOCAL" && exit 0 |
30 # success | |
31 exit 0 | |
32 fi | |
33 cp "$LOCAL.orig" "$LOCAL" | 27 cp "$LOCAL.orig" "$LOCAL" |
34 fi | 28 fi |
35 | 29 |
36 if [ -n "$DISPLAY" ]; then | 30 if [ -n "$DISPLAY" ]; then |
37 # try using kdiff3, which is fairly nice | 31 # try using kdiff3, which is fairly nice |
38 if type kdiff3 > /dev/null 2>&1; then | 32 if type kdiff3 > /dev/null 2>&1; then |
39 if kdiff3 --auto "$BASE" "$LOCAL" "$OTHER" -o "$LOCAL" ; then | 33 kdiff3 --auto "$BASE" "$LOCAL" "$OTHER" -o "$LOCAL" || exit 1 |
40 exit 0 | 34 exit 0 |
41 else | |
42 exit 1 | |
43 fi | |
44 fi | 35 fi |
45 | 36 |
46 # try using tkdiff, which is a bit less sophisticated | 37 # try using tkdiff, which is a bit less sophisticated |
47 if type tkdiff > /dev/null 2>&1; then | 38 if type tkdiff > /dev/null 2>&1; then |
48 if tkdiff "$LOCAL" "$OTHER" -a "$BASE" -o "$LOCAL" ; then | 39 tkdiff "$LOCAL" "$OTHER" -a "$BASE" -o "$LOCAL" || exit 1 |
49 exit 0 | 40 exit 0 |
50 else | |
51 exit 1 | |
52 fi | |
53 fi | 41 fi |
54 fi | 42 fi |
55 | 43 |
56 # Attempt to do a merge with $EDITOR | 44 # Attempt to do a merge with $EDITOR |
57 if type merge > /dev/null 2>&1; then | 45 if type merge > /dev/null 2>&1; then |
71 rm -rf "$HGTMP" | 59 rm -rf "$HGTMP" |
72 exit $1 | 60 exit $1 |
73 } | 61 } |
74 | 62 |
75 # attempt to manually merge with diff and patch | 63 # attempt to manually merge with diff and patch |
76 if type diff > /dev/null 2>&1; then | 64 if type diff > /dev/null 2>&1 && type patch > /dev/null 2>&1; then |
77 if type patch > /dev/null 2>&1; then | 65 # Remove temporary files even if we get interrupted |
78 # Remove temporary files even if we get interrupted | 66 trap "cleanup_exit 1" TERM KILL INT QUIT ABRT |
79 trap "cleanup_exit 1" TERM KILL INT QUIT ABRT | |
80 | 67 |
81 HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$" | 68 HGTMP="${TMPDIR-/tmp}/hgmerge.$RANDOM.$RANDOM.$RANDOM.$$" |
82 (umask 077 && mkdir "$HGTMP") || { | 69 (umask 077 && mkdir "$HGTMP") || { |
83 echo "Could not create temporary directory! Exiting." 1>&2 | 70 echo "Could not create temporary directory! Exiting." 1>&2 |
84 exit 1 | 71 exit 1 |
85 } | 72 } |
86 | 73 |
87 diff -u "$BASE" "$OTHER" > "$HGTMP/diff" | 74 diff -u "$BASE" "$OTHER" > "$HGTMP/diff" |
88 if patch "$LOCAL" < "$HGTMP/diff" ; then | 75 if patch "$LOCAL" < "$HGTMP/diff"; then |
89 cleanup_exit 0 | 76 cleanup_exit 0 |
90 else | 77 else |
91 $EDITOR "$LOCAL" "$LOCAL.rej" | 78 $EDITOR "$LOCAL" "$LOCAL.rej" |
92 fi | |
93 cleanup_exit 1 | |
94 fi | 79 fi |
80 cleanup_exit 1 | |
95 fi | 81 fi |
96 | 82 |
97 echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!" | 83 echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!" |
98 exit 1 | 84 exit 1 |