Skip to content

Commit

Permalink
Teach rebase to rebase even if upstream is up to date
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sverre Rabbelier authored and Junio C Hamano committed Feb 14, 2009
1 parent 5cd12b8 commit b2f82e0
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions git-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -294,13 +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
;;
Expand Down Expand Up @@ -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"
Expand Down

0 comments on commit b2f82e0

Please sign in to comment.