annotate hgeditor @ 2550:45235e492cc6

Disable automatic line endings conversion on windows The rationale behind this is that such conversion implies a particular situation in which all files in the repo are terminated by only LF. This is documented nowhere and it bit me sharply when I upgraded. Furthermore, it works on the assumption that a file containing no NULL characters are actually a text file. Therefore it cannot guarantee that no binary file will be harmed in the process. Currently, if a file already contains CRLF line endings when it is copied to the working dir from the repo, then the version in the working dir will be corrupted by an extra CR. I'm working on a patch that will turn this into a warning. But as a side effect, committing such a file back will strip it from its CR. In all case, unrequested data modification can occur under the feet of the user, which is bad(tm), ihmo.
author Raphael Marmier <raphael@marmier.net>
date Mon, 03 Jul 2006 10:18:46 -0700
parents 20b621154e17
children d9b8d28c0b94
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
544
3d4d5f2aba9a Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 484
diff changeset
1 #!/bin/sh
186
9a2075c0b9b8 Add $HGEDITOR hook and example script
mpm@selenic.com
parents:
diff changeset
2 #
1599
f93fde8f5027 remove the gpg stuff from hgeditor (superseded by the signing extension)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1009
diff changeset
3 # This is an example of using HGEDITOR to create of diff to review the
f93fde8f5027 remove the gpg stuff from hgeditor (superseded by the signing extension)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1009
diff changeset
4 # changes while commiting.
684
4ccf3de52989 Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents: 683
diff changeset
5
666
0100a43788ca hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 665
diff changeset
6 # If you want to pass your favourite editor some other parameters
0100a43788ca hgeditor: Remove EMAIL default for HGUSER, comment editor selection
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 665
diff changeset
7 # only for Mercurial, modify this:
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
8 case "${EDITOR}" in
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
9 "")
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
10 EDITOR="vi"
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
11 ;;
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
12 emacs)
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
13 EDITOR="$EDITOR -nw"
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
14 ;;
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
15 gvim|vim)
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
16 EDITOR="$EDITOR -f -o"
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
17 ;;
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
18 esac
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
19
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
20
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
21 HGTMP=""
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
22 cleanup_exit() {
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
23 rm -rf "$HGTMP"
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
24 }
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
25
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
26 # Remove temporary files even if we get interrupted
831
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
27 trap "cleanup_exit" 0 # normal exit
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
28 trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
29
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
30 HGTMP="${TMPDIR-/tmp}/hgeditor.$RANDOM.$RANDOM.$RANDOM.$$"
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
31 (umask 077 && mkdir "$HGTMP") || {
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
32 echo "Could not create temporary directory! Exiting." 1>&2
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
33 exit 1
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
34 }
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
35
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
36 (
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
37 grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
38 hg diff "$changed" >> "$HGTMP/diff"
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
39 done
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
40 )
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
41
1599
f93fde8f5027 remove the gpg stuff from hgeditor (superseded by the signing extension)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1009
diff changeset
42 cat "$1" > "$HGTMP/msg"
684
4ccf3de52989 Turn off signing with hgeditor by default
Matt Mackall <mpm@selenic.com>
parents: 683
diff changeset
43
796
33a272b79e54 Replaced mktemp and usage of ${par:=word}.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 769
diff changeset
44 CHECKSUM=`md5sum "$HGTMP/msg"`
1009
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
45 if [ -s "$HGTMP/diff" ]; then
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
46 $EDITOR "$HGTMP/msg" "$HGTMP/diff" || exit $?
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
47 else
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
48 $EDITOR "$HGTMP/msg" || exit $?
1bc619b12025 Don't show the diff in hgeditor if there are no changes in file contents.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 839
diff changeset
49 fi
831
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
50 echo "$CHECKSUM" | md5sum -c >/dev/null 2>&1 && exit 13
754
3e73bf876f17 Fixes and cleanups to hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 684
diff changeset
51
1599
f93fde8f5027 remove the gpg stuff from hgeditor (superseded by the signing extension)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1009
diff changeset
52 mv "$HGTMP/msg" "$1"
348
442eb02cf870 Improved hgeditor:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 280
diff changeset
53
831
232d0616a80a Cleaned up trap handling:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
54 exit $?