comparison hgmerge @ 1664:4338e33c973b

Safer version of FileMerge merge
author Brendan Cully <brendan@kublai.com>
date Mon, 30 Jan 2006 12:02:12 +1300
parents 64a1169c927d
children 83e8cd97b9f9
comparison
equal deleted inserted replaced
1663:d529cdc0a3ee 1664:4338e33c973b
42 exit 1 42 exit 1
43 fi 43 fi
44 cp "$LOCAL.orig" "$LOCAL" 44 cp "$LOCAL.orig" "$LOCAL"
45 fi 45 fi
46 46
47 # on MacOS X try opendiff 47 # on MacOS X try FileMerge.app, shipped with Apple's developer tools
48 # (uses FileMerge.app, shipped with Apple's developer tools) 48 # TODO: make proper temp files. foo.orig and foo.link are dangerous
49 if type opendiff > /dev/null 2>&1; then 49 FILEMERGE='/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge'
50 opendiff "$LOCAL.orig" "$OTHER" -ancestor "$BASE" -merge "$LOCAL" || exit 1 50 if type "$FILEMERGE" > /dev/null 2>&1; then
51 # prevent $OTHER from being removed too early 51 cp "$LOCAL.orig" "$LOCAL"
52 # can surely be done in a more elegant way 52 ln "$LOCAL" "$LOCAL.link"
53 sleep 1 53 # filemerge prefers the right by default
54 exit 0 54 if ! "$FILEMERGE" -left "$OTHER" -right "$LOCAL" -ancestor "$BASE" -merge "$LOCAL"
55 then
56 echo "FileMerge failed to launch"
57 exit 1
58 fi
59 if ! test "$LOCAL" -ef "$LOCAL.link"
60 then
61 rm "$LOCAL.orig" "$LOCAL.link"
62 exit 0
63 else
64 rm "$LOCAL.link"
65 echo "$LOCAL is unchanged. Was the merge successful?"
66 select answer in yes no
67 do
68 if test "$answer" == "yes"
69 then
70 rm "$LOCAL.orig"
71 exit 0
72 else
73 exit 1
74 fi
75 done
76 exit 1
77 fi
55 fi 78 fi
56 79
57 if [ -n "$DISPLAY" ]; then 80 if [ -n "$DISPLAY" ]; then
58 # try using kdiff3, which is fairly nice 81 # try using kdiff3, which is fairly nice
59 if type kdiff3 > /dev/null 2>&1; then 82 if type kdiff3 > /dev/null 2>&1; then