git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Bug: commit -p breaks with -m

From
Jeff King <peff@peff.net>
Date
Aug 15, 2013, 12:16 UTC
Message-ID
<20130815121635.GB22102@sigill.intra.peff.net>
In-Reply-To
<6EC98F2F-98FC-439B-BD9C-B1D0DB1F5E10@gmail.com>
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
Previous: Matan NassauNext: Junio C Hamano
Message 2 of 4 in “Bug: commit -p breaks with -m”
  1. Matan NassauAug 15, 2013
  2. Jeff KingAug 15, 2013
  3. Junio C HamanoAug 15, 2013
  4. Jeff KingAug 15, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.