threads / bug / 31912

[BUG] (git commit --patch --message $MESSAGE) disallows hunk editing

Subject: [BUG] (git commit --patch --message $MESSAGE) disallows hunk editing

## tl;dr

3 messages between Oct 23, 2012 and Sep 29, 2014.

replies: 2people: 2as markdown or json

Max Nanasy· Oct 23, 2012, 05:48 UTC · lore
Tested against v1.7.12.4
Steps to reproduce:
	A. cd $DIRTY_WORKING_COPY
	B. git commit --patch --message $MESSAGE
	C. Stage this hunk? e
Expected behavior:
	After step C, the hunk opens in the user's editor
Actual behavior:
	After step C, the hunk is selected unedited (as if the user had entered "y")
AFAICT, this occurs because of the following code in
builtin/commit.c:parse_and_validate_options:
	if (... || message.len || ...)
		use_editor = 0;
	...
	if (!use_editor)
		setenv("GIT_EDITOR", ":", 1);
Because --message is specified, GIT_EDITOR is set to ":", which
prevents the user from editing hunks, although the intent is most
likely to just prevent the user from editing the commit message.
Max Nanasy· Sep 29, 2014, 23:01 UTC · re: Max Nanasy · lore

Re: [BUG] (git commit --patch --message $MESSAGE) disallows hunk editing

Max Nanasy <max.nanasy <at> gmail.com> writes:
Show 23 quoted lines
> 
> Tested against v1.7.12.4
> 
> Steps to reproduce:
> 	A. cd $DIRTY_WORKING_COPY
> 	B. git commit --patch --message $MESSAGE
> 	C. Stage this hunk? e
> Expected behavior:
> 	After step C, the hunk opens in the user's editor
> Actual behavior:
> 	After step C, the hunk is selected unedited (as if the user had entered "y")
> 
> AFAICT, this occurs because of the following code in
> builtin/commit.c:parse_and_validate_options:
> 	if (... || message.len || ...)
> 		use_editor = 0;
> 	...
> 	if (!use_editor)
> 		setenv("GIT_EDITOR", ":", 1);
> Because --message is specified, GIT_EDITOR is set to ":", which
> prevents the user from editing hunks, although the intent is most
> likely to just prevent the user from editing the commit message.
> 
It appears that this was fixed in version 2.0.  The changelog entry says:
 * When it is not necessary to edit a commit log message (e.g. "git
   commit -m" is given a message without specifying "-e"), we used to
   disable the spawning of the editor by overriding GIT_EDITOR, but
   this means all the uses of the editor, other than to edit the
   commit log message, are also affected.
   (merge b549be0 bp/commit-p-editor later to maint).

← back to recent threads