threads / bug / 34699

Bug: commit -p breaks with -m

Subject: Bug: commit -p breaks with -m

## tl;dr

4 messages between Aug 15, 2013 and Aug 15, 2013.

replies: 3people: 3as markdown or json

Matan Nassau· Aug 15, 2013, 04:43 UTC · lore
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?
Jeff King· Aug 15, 2013, 12:16 UTC · re: Matan Nassau · lore

Re: Bug: commit -p breaks with -m

On Thu, Aug 15, 2013 at 12:43:39AM -0400, Matan Nassau wrote:
Show 22 quoted lines
> 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
Junio C Hamano· Aug 15, 2013, 17:28 UTC · re: Jeff King · lore

Re: Bug: commit -p breaks with -m

Jeff King <peff@peff.net> writes:
> Unfortunately, I think that will require some refactoring of the
> run_hook interface, which does not allow arbitrary environment
> parameters to be set.
Heh, I said that long time ago, e.g. $gmane/212284 ;-)

This might turn out to be a good starting point, even though I didn't read it again before sending this message.

    http://thread.gmane.org/gmane.comp.version-control.git/192669/focus=192806
Jeff King· Aug 15, 2013, 17:31 UTC · re: Junio C Hamano · lore

Re: Bug: commit -p breaks with -m

On Thu, Aug 15, 2013 at 10:28:16AM -0700, Junio C Hamano wrote:
Show 12 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > Unfortunately, I think that will require some refactoring of the
> > run_hook interface, which does not allow arbitrary environment
> > parameters to be set.
> 
> Heh, I said that long time ago, e.g. $gmane/212284 ;-)
> 
> This might turn out to be a good starting point, even though I
> didn't read it again before sending this message.
> 
>     http://thread.gmane.org/gmane.comp.version-control.git/192669/focus=192806

Looking at both of those messages, I agree completely. I even started to sketch out the refactoring when I sent the previous message, and it looked a lot like the patch you sent.

-Peff

← back to recent threads