[PATCH] Allow to specify the editor used for git rebase -i by config/environment var
From: Peter Oberndorfer <hidden>
Date: 2016-06-15 22:52:17
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
The search order for choosing the sequence editor is: $GIT_SEQUENCE_EDITOR git config sequence.editor git var GIT_EDITOR (default editor for commit messages) With this change is it possible to have a separate (possibly graphical) editor that helps the user during a interactive rebase. Using $GIT_EDITOR or core.editor config var for this is not possible since they is also used to start the commit message editor for reword action. Signed-off-by: Peter Oberndorfer <redacted> --- I reworded the commit message and the config description a bit. renamed to sequence.editor / $GIT_SEQUENCE_EDITOR and moved the helper to git-rebase--interactive.sh Documentation/config.txt | 7 +++++++ git-rebase--interactive.sh | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 03296b7..048c5f9 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt@@ -473,6 +473,13 @@ 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 todo 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. + See linkgit:git-var[1] + 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 94f36c2..13a0661 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:+set}" + 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" ||
--
1.7.7.329.g2140c