diff options
-rw-r--r-- | Documentation/config.txt | 6 | ||||
-rw-r--r-- | git-rebase--interactive.sh | 15 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 0658ffb889..611e35b206 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -473,6 +473,12 @@ core.editor:: variable when it is set, and the environment variable `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:: The command that git will use to paginate output. Can be overridden with the `GIT_PAGER` environment diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 94f36c254c..804001bb4e 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -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 () { ff=--ff case "$1" in -n) sha1=$2; ff= ;; *) sha1=$1 ;; esac @@ -832,7 +845,7 @@ has_action "$todo" || die_abort "Nothing to do" cp "$todo" "$todo".backup -git_editor "$todo" || +git_sequence_editor "$todo" || die_abort "Could not execute editor" has_action "$todo" || |