git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC PATCH v2] Teach rebase to rebase even if upstream is up to date

From
Sverre Rabbelier <srabbelier@gmail.com>
Date
Feb 13, 2009, 22:48 UTC
Message-ID
<1234565281-20960-1-git-send-email-srabbelier@gmail.com>

Normally, if the current branch is up to date, the rebase is aborted. However, it may be desirable to allow rebasing even if the current branch is up to date. When using the '--whitespace=fix' option -f is implied.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
---

Only added the 'case "$1" in...' bit since the RFC v1. I'm not sure how to do the test-cases. Should they go into t3400-rebase.sh, and if so, any suggesions on how to write these test cases?

 git-rebase.sh |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/git-rebase.sh b/git-rebase.sh
index 6d3eddb..ccfd2b9 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano.
 #
 
-USAGE='[--interactive | -i] [-v] [--onto <newbase>] [<upstream>|--root] [<branch>]'
+USAGE='[--interactive | -i] [-v] [--force-rebase | -f] [--onto <newbase>] [<upstream>|--root] [<branch>]'
 LONG_USAGE='git-rebase replaces <branch> with a new branch of the
 same name.  When the --onto option is provided the new branch starts
 out with a HEAD equal to <newbase>, otherwise it is equal to <upstream>
@@ -48,6 +48,7 @@ prec=4
 verbose=
 git_am_opt=
 rebase_root=
+force_rebase=
 
 continue_merge () {
 	test -n "$prev_head" || die "prev_head must be defined"
@@ -294,12 +295,21 @@ do
 		;;
 	--whitespace=*)
 		git_am_opt="$git_am_opt $1"
+
+    case "$1" in
+    --whitespace=fix|--whitespace=strip)
+      force_rebase=t
+      ;;
+    esac
 		;;
 	-C*)
 		git_am_opt="$git_am_opt $1"
 		;;
 	--root)
 		rebase_root=t
+    ;;
+  -f|--f|--fo|--for|--forc|force|--force-r|--force-re|--force-reb|--force-reba|--force_rebas|--force-rebase)
+    force_rebase=t
 		;;
 	-*)
 		usage
@@ -419,10 +429,15 @@ if test "$upstream" = "$onto" && test "$mb" = "$onto" &&
 	# linear history?
 	! (git rev-list --parents "$onto".."$branch" | grep " .* ") > /dev/null
 then
-	# Lazily switch to the target branch if needed...
-	test -z "$switch_to" || git checkout "$switch_to"
-	echo >&2 "Current branch $branch_name is up to date."
-	exit 0
+	if test -z "$force_rebase"
+	then
+		# Lazily switch to the target branch if needed...
+		test -z "$switch_to" || git checkout "$switch_to"
+		echo >&2 "Current branch $branch_name is up to date."
+		exit 0
+	else
+		echo "Current branch $branch_name is up to date, rebase forced."
+  fi
 fi
 
 if test -n "$verbose"
-- 
1.6.2.rc0.206.g681e7.dirty
Next: Johannes Schindelin
Message 1 of 4 in “Teach rebase to rebase even if upstream is up to date”
  1. Teach rebase to rebase even if upstream is up to dateSverre Rabbelier, Feb 13, 2009
  2. Johannes SchindelinFeb 14, 2009
  3. Sverre RabbelierFeb 14, 2009
  4. Junio C HamanoFeb 14, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.