提交 821881d8 编写于 作者: P Peter Oberndorfer 提交者: Junio C Hamano

"rebase -i": support special-purpose editor to edit insn sheet

The insn sheet used by "rebase -i" is designed to be easily editable by
any text editor, but an editor that is specifically meant for it (but
is otherwise unsuitable for editing regular text files) could be useful
by allowing drag & drop reordering in a GUI environment, for example.

The GIT_SEQUENCE_EDITOR environment variable and/or the sequence.editor
configuration variable can be used to specify such an editor, while
allowing the usual editor to be used to edit commit log messages. As
usual, the environment variable takes precedence over the configuration
variable.

It is envisioned that other "sequencer" based tools will use the same
mechanism.
Signed-off-by: NPeter Oberndorfer <kumbayo84@arcor.de>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 2c461039
...@@ -473,6 +473,12 @@ core.editor:: ...@@ -473,6 +473,12 @@ core.editor::
variable when it is set, and the environment variable variable when it is set, and the environment variable
`GIT_EDITOR` is not set. See linkgit:git-var[1]. `GIT_EDITOR` is not set. See linkgit:git-var[1].
sequence.editor::
Text editor used by `git rebase -i` for editing the rebase insn file.
The value is meant to be interpreted by the shell when it is used.
It can be overridden by the `GIT_SEQUENCE_EDITOR` environment variable.
When not configured the default commit message editor is used instead.
core.pager:: core.pager::
The command that git will use to paginate output. Can The command that git will use to paginate output. Can
be overridden with the `GIT_PAGER` environment be overridden with the `GIT_PAGER` environment
......
...@@ -161,6 +161,19 @@ do_with_author () { ...@@ -161,6 +161,19 @@ do_with_author () {
) )
} }
git_sequence_editor () {
if test -z "$GIT_SEQUENCE_EDITOR"
then
GIT_SEQUENCE_EDITOR="$(git config sequence.editor)"
if [ -z "$GIT_SEQUENCE_EDITOR" ]
then
GIT_SEQUENCE_EDITOR="$(git var GIT_EDITOR)" || return $?
fi
fi
eval "$GIT_SEQUENCE_EDITOR" '"$@"'
}
pick_one () { pick_one () {
ff=--ff ff=--ff
case "$1" in -n) sha1=$2; ff= ;; *) sha1=$1 ;; esac case "$1" in -n) sha1=$2; ff= ;; *) sha1=$1 ;; esac
...@@ -832,7 +845,7 @@ has_action "$todo" || ...@@ -832,7 +845,7 @@ has_action "$todo" ||
die_abort "Nothing to do" die_abort "Nothing to do"
cp "$todo" "$todo".backup cp "$todo" "$todo".backup
git_editor "$todo" || git_sequence_editor "$todo" ||
die_abort "Could not execute editor" die_abort "Could not execute editor"
has_action "$todo" || has_action "$todo" ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册