merge: use editor by default in interactive sessions
commitf8246281af9adb0fdddbcc90d2e19cb5cd5217e5
authorJunio C Hamano <gitster@pobox.com>
Wed, 11 Jan 2012 06:44:45 +0000 (10 22:44 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Jan 2012 22:34:55 +0000 (23 14:34 -0800)
treec9adbb2e536c1ce99cffa44ce3c99aef9075e9fa
parent0074d18dc0d816f9842d3e0e1cd0b26341715b37
merge: use editor by default in interactive sessions

Traditionally, a cleanly resolved merge was committed by "git merge" using
the auto-generated merge commit log message without invoking the editor.

After 5 years of use in the field, it turns out that people perform too
many unjustified merges of the upstream history into their topic branches.
These merges are not just useless, but they are often not explained well,
and making the end result unreadable when it gets time for merging their
history back to their upstream.

Earlier we added the "--edit" option to the command, so that people can
edit the log message to explain and justify their merge commits. Let's
take it one step further and spawn the editor by default when we are in an
interactive session (i.e. the standard input and the standard output are
pointing at the same tty device).

There may be existing scripts that leave the standard input and the
standard output of the "git merge" connected to whatever environment the
scripts were started, and such invocation might trigger the above
"interactive session" heuristics.  GIT_MERGE_AUTOEDIT environment variable
can be set to "no" at the beginning of such scripts to use the historical
behaviour while the script runs.

Note that this backward compatibility is meant only for scripts, and we
deliberately do *not* support "merge.edit = yes/no/auto" configuration
option to allow people to keep the historical behaviour.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-merge.txt
Documentation/merge-options.txt
builtin/merge.c
t/test-lib.sh