threads / rfc / 17779

RFC v2Teach rebase to rebase even if upstream is up to date

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

## tl;dr

4 messages between Feb 13, 2009 and Feb 14, 2009. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Sverre Rabbelier· Feb 13, 2009, 22:48 UTC · lore

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(-)
Show changes to git-rebase.sh +20 −5
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
Johannes Schindelin· Feb 14, 2009, 06:07 UTC · re: Sverre Rabbelier · lore

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

On Fri, 13 Feb 2009, Sverre Rabbelier wrote:
> +    case "$1" in
> +    --whitespace=fix|--whitespace=strip)
	--whitespace=*?

I know that you can turn it off with --whitespace=nowarn, but that's such an outlier that we do not have to care about it, right?

Or if we really want to:
	--whitespace=nowarn) ;;
	--whitespace=*) force_rebase=t ;;
Hm?

Ciao, Dscho

Sverre Rabbelier· Feb 14, 2009, 17:57 UTC · re: Johannes Schindelin · lore

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

On Sat, Feb 14, 2009 at 07:07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

> I know that you can turn it off with --whitespace=nowarn, but that's
> such an outlier that we do not have to care about it, right?

Well, actually, in the v1 thread Junio mentioned that it should not imply -f for --whitespace=nowarn.

Show 6 quoted lines
> Or if we really want to:
>
>        --whitespace=nowarn) ;;
>        --whitespace=*) force_rebase=t ;;
>
> Hm?
No strong opinion on my side, what does the gitster have to say about it?
-- 
Cheers,

Sverre Rabbelier
Junio C Hamano· Feb 14, 2009, 19:56 UTC · re: Sverre Rabbelier · lore

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

Sverre Rabbelier <srabbelier@gmail.com> writes:
Show 16 quoted lines
> On Sat, Feb 14, 2009 at 07:07, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
>> I know that you can turn it off with --whitespace=nowarn, but that's
>> such an outlier that we do not have to care about it, right?
>
> Well, actually, in the v1 thread Junio mentioned that it should not
> imply -f for --whitespace=nowarn.
>
>> Or if we really want to:
>>
>>        --whitespace=nowarn) ;;
>>        --whitespace=*) force_rebase=t ;;
>>
>> Hm?
>
> No strong opinion on my side, what does the gitster have to say about it?

"Fix" is obviously a request to "fix" things. On the other hand, at least to me, "warn" is more about "*if you were to* rewrite and find issues, please notify me". So I prefer what is queued already.

← back to recent threads