With git 1.8.3.3,
$ seq 5 >data
$ git add data
$ git commit -mdata
$ sed -i '2 d' data
$ git commit -pmchange
At the prompt, type e to edit the hunk. The editor doesn't start, but git records a commit.
I found that builtin/commit.c sets the GIT_EDITOR env var to ":" when the user specifies the -m option. This was done in 406400ce4f69. Removing these two lines,
if (!use_editor)
setenv("GIT_EDITOR", ":", 1);
seems to fix the issue, but I'm not sure this won't break the prepare-commit-msg hook. I'd like to submit a patch: can I get a hint if this change would break commit hooks or anything else I'm not seeing?
On Thu, Aug 15, 2013 at 12:43:39AM -0400, Matan Nassau wrote:
With git 1.8.3.3,
$ seq 5 >data
$ git add data
$ git commit -mdata
$ sed -i '2 d' data
$ git commit -pmchange
At the prompt, type e to edit the hunk. The editor doesn't start, but
git records a commit.
I found that builtin/commit.c sets the GIT_EDITOR env var to ":" when
the user specifies the -m option. This was done in 406400ce4f69.
Removing these two lines,
if (!use_editor)
setenv("GIT_EDITOR", ":", 1);
seems to fix the issue, but I'm not sure this won't break the
prepare-commit-msg hook. I'd like to submit a patch: can I get a hint
if this change would break commit hooks or anything else I'm not
seeing?
Yeah, that is definitely a bug. Just removing those lines would not be the
right fix, though, because the point of them is to let the
prepare-commit-msg hook know whether or not an editor is in use.
Instead, I think you would want to limit the scope of where we have set
GIT_EDITOR. I.e., drop those lines, and then add GIT_EDITOR=: to the
environment that we pass to the hook via the run_hook function.
Unfortunately, I think that will require some refactoring of the
run_hook interface, which does not allow arbitrary environment
parameters to be set.
-Peff