summaryrefslogtreecommitdiff
path: root/scripts/git-hooks/commit-msg
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2013-02-15 14:39:40 +0100
committerPádraig Brady <P@draigBrady.com>2013-02-18 01:28:49 +0000
commit5bff307bdbee76adad7a7990cc23d8fd43b76252 (patch)
tree3b13d8fb995c418846a71305d8aa097ad2707b58 /scripts/git-hooks/commit-msg
parentbf7b0e0358bc79141abdd4d974270fbc6bfcba27 (diff)
downloadcoreutils-5bff307bdbee76adad7a7990cc23d8fd43b76252.tar.xz
maint: choose editor in the commit-msg git hook the same way git does
Git honours the GIT_EDITOR environment variable, the "core.editor" Git configuration variable, and the EDITOR environment variable (in that order, and defaulting to "vi" if none of them is set) to decide which editor should be invoked for the user when he has to or want to edit his commit message. However, our commit-msg hook, when invoking an editor on behalf of the user to allow him to fix a non-policy-complaint commit message, only honoured the EDITOR environment variable. To avoid potential annoying inconsistencies, we should really use the same logic used by Git in the selection of the editor. Luckily, we don't have to duplicate this logic (that would be brittle in the long term), as we can rely on the "git var" command, designed exactly to be used in situations like this. * scripts/git-hooks ($editor): Adjust definition.
Diffstat (limited to 'scripts/git-hooks/commit-msg')
-rwxr-xr-xscripts/git-hooks/commit-msg5
1 files changed, 4 insertions, 1 deletions
diff --git a/scripts/git-hooks/commit-msg b/scripts/git-hooks/commit-msg
index 7a1148949..559a0ea8f 100755
--- a/scripts/git-hooks/commit-msg
+++ b/scripts/git-hooks/commit-msg
@@ -6,7 +6,10 @@ use strict;
use warnings;
(my $ME = $0) =~ s|.*/||;
-my $editor = $ENV{EDITOR} || 'vi';
+# Emulate Git's choice of the editor for the commit message.
+chomp (my $editor = `git var GIT_EDITOR`);
+# And have a sane, minimal fallback in case of weird failures.
+$editor = "vi" if $? != 0 or $editor =~ /^\s*\z/;
# Keywords allowed before the colon on the first line of a commit message:
# program names and a few general category names.