]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
maint: choose editor in the commit-msg git hook the same way git does
authorStefano Lattarini <stefano.lattarini@gmail.com>
Fri, 15 Feb 2013 13:39:40 +0000 (14:39 +0100)
committerPádraig Brady <P@draigBrady.com>
Mon, 18 Feb 2013 01:28:49 +0000 (01:28 +0000)
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.

scripts/git-hooks/commit-msg

index 7a11489493646d46cfb336285f7766971fad6276..559a0ea8f5277a5d8ff92bfacf91c6a744006240 100755 (executable)
@@ -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.