[RFC/WIP PATCH] Use config value rebase.editor as editor when starting git rebase -i

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If rebase.editor is not set interactive rebase falls back
to the default editor.

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 it is also used to start the commit message editor for reword action.

Signed-off-by: Peter Oberndorfer <kumbayo84@xxxxxxxx>
---
Hi,

i wrote a (not yet released) git rebase -i helper that allows to order commits
by drag/drop and allows to select the action from a combo box.
(written in Qt)
See http://i55.tinypic.com/2d94gg0.jpg for how it currently looks like. :-)
No more typos, no more lost commit by cutting without pasting...

To integrate this properly into git i need something like this patch.

Open questions/problems:
* GIT_EDITOR env var is not honored anymore after this change.
  Help from somebody with more bash knowledge is highly appreciated!

* Should git_rebase_editor be in git-rebase--interactive.sh instead
  (since it is only used there)

* How should the config be called?
  It is not directly used during rebase, only during rebase -i
  that might not be fully clear from the config name.

* Better config.txt description?

Thanks,
Greetings Peter

PS: My tool will hopefully be released soon.
Cleanup code, test(lin/ win), write some doc (how to use with git),
choose name :-), choose license...

 Documentation/config.txt   |    6 ++++++
 git-rebase--interactive.sh |    2 +-
 git-sh-setup.sh            |   13 +++++++++++++
 3 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 03296b7..1d9ae79 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1591,6 +1591,12 @@ rebase.stat::
 	Whether to show a diffstat of what changed upstream since the last
 	rebase. False by default.
 
+rebase.editor::
+	Text editor used by git rebase -i for editing the rebasse todo file.
+	The value is meant to be interpreted by the shell when it is used.
+	When not configured the default commit message editor is used instead.
+	See "core.editor"
+
 rebase.autosquash::
 	If set to true enable '--autosquash' option by default.
 
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 94f36c2..0f3b569 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -832,7 +832,7 @@ has_action "$todo" ||
 	die_abort "Nothing to do"
 
 cp "$todo" "$todo".backup
-git_editor "$todo" ||
+git_rebase_editor "$todo" ||
 	die_abort "Could not execute editor"
 
 has_action "$todo" ||
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index 8e427da..303fb96 100644
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -113,6 +113,19 @@ git_editor() {
 	eval "$GIT_EDITOR" '"$@"'
 }
 
+git_rebase_editor() {
+	if test -z "${GIT_REBASEI_EDITOR:+set}"
+	then
+		GIT_REBASEI_EDITOR="$(git config rebase.editor)"
+		if [ -z "$GIT_REBASEI_EDITOR" ]
+		then
+			GIT_REBASEI_EDITOR="$(git var GIT_EDITOR)" || return $?
+		fi
+	fi
+
+	eval "$GIT_REBASEI_EDITOR" '"$@"'
+}
+
 git_pager() {
 	if test -t 1
 	then
-- 
1.7.7.215.gfef80

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]