rebase: Support preserving merges in non-interactive mode
[gitweb.git] / git-rebase.sh
index 528b604cd57a774030c5f5830d3d78b5a04454cf..03e5f95051382fb1a9b811e9974cb5424fee883b 100755 (executable)
@@ -138,10 +138,26 @@ finish_rb_merge () {
 }
 
 is_interactive () {
-       test -f "$dotest"/interactive ||
-       while :; do case $#,"$1" in 0,|*,-i|*,--interactive) break ;; esac
+       while test $# != 0
+       do
+               case "$1" in
+                       -i|--interactive)
+                               interactive_rebase=explicit
+                               break
+                       ;;
+                       -p|--preserve-merges)
+                               interactive_rebase=implied
+                       ;;
+               esac
                shift
-       done && test -n "$1"
+       done
+
+       if [ "$interactive_rebase" = implied ]; then
+               GIT_EDITOR=:
+               export GIT_EDITOR
+       fi
+
+       test -n "$interactive_rebase" || test -f "$dotest"/interactive
 }
 
 test -f "$GIT_DIR"/rebase-apply/applying &&