summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Sverre Rabbelier <srabbelier@gmail.com>2009-02-13 23:48:01 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-02-13 17:17:47 -0800
commitb2f82e05de2512ae4adb63b669f6c1fe6cba3148 (patch)
tree212c260d905d8741bffa389b9061f828b2cc76be
parentInstall the default "master" branch configuration after cloning a void (diff)
downloadtgif-b2f82e05de2512ae4adb63b669f6c1fe6cba3148.tar.xz
Teach rebase to rebase even if upstream is up to date
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-rebase.sh24
1 files changed, 19 insertions, 5 deletions
diff --git a/git-rebase.sh b/git-rebase.sh
index 6d3eddbada..5d9a393c38 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,6 +295,11 @@ 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"
@@ -301,6 +307,9 @@ do
--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 +428,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"