mirror of
https://github.com/git/git
synced 2024-08-25 10:45:59 +00:00
git-rebase: Add --stat and --no-stat for producing diffstat on rebase
The behavior of --verbose is unchanged, but uses a different state variable internally, so that the meaning of verbose output may be expanded without affecting the diffstat. This is also reflected in the documentation. The configuration option rebase.stat works the same was as merg.stat, but the default is currently false. Signed-off-by: Tor Arne Vestbø <torarnv@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f474c52661
commit
a9c3821ca2
|
@ -1160,6 +1160,10 @@ pull.octopus::
|
||||||
pull.twohead::
|
pull.twohead::
|
||||||
The default merge strategy to use when pulling a single branch.
|
The default merge strategy to use when pulling a single branch.
|
||||||
|
|
||||||
|
rebase.stat::
|
||||||
|
Whether to show a diffstat of what changed upstream since the last
|
||||||
|
rebase. False by default.
|
||||||
|
|
||||||
receive.fsckObjects::
|
receive.fsckObjects::
|
||||||
If it is set to true, git-receive-pack will check all received
|
If it is set to true, git-receive-pack will check all received
|
||||||
objects. It will abort in the case of a malformed object or a
|
objects. It will abort in the case of a malformed object or a
|
||||||
|
|
|
@ -192,6 +192,13 @@ Alternatively, you can undo the 'git-rebase' with
|
||||||
|
|
||||||
git rebase --abort
|
git rebase --abort
|
||||||
|
|
||||||
|
CONFIGURATION
|
||||||
|
-------------
|
||||||
|
|
||||||
|
rebase.stat::
|
||||||
|
Whether to show a diffstat of what changed upstream since the last
|
||||||
|
rebase. False by default.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
<newbase>::
|
<newbase>::
|
||||||
|
@ -232,7 +239,15 @@ OPTIONS
|
||||||
|
|
||||||
-v::
|
-v::
|
||||||
--verbose::
|
--verbose::
|
||||||
Display a diffstat of what changed upstream since the last rebase.
|
Be verbose. Implies --stat.
|
||||||
|
|
||||||
|
--stat::
|
||||||
|
Show a diffstat of what changed upstream since the last rebase. The
|
||||||
|
diffstat is also controlled by the configuration option rebase.stat.
|
||||||
|
|
||||||
|
-n::
|
||||||
|
--no-stat::
|
||||||
|
Do not show a diffstat as part of the rebase process.
|
||||||
|
|
||||||
--no-verify::
|
--no-verify::
|
||||||
This option bypasses the pre-rebase hook. See also linkgit:githooks[5].
|
This option bypasses the pre-rebase hook. See also linkgit:githooks[5].
|
||||||
|
|
|
@ -46,6 +46,7 @@ do_merge=
|
||||||
dotest="$GIT_DIR"/rebase-merge
|
dotest="$GIT_DIR"/rebase-merge
|
||||||
prec=4
|
prec=4
|
||||||
verbose=
|
verbose=
|
||||||
|
diffstat=$(git config --bool rebase.stat)
|
||||||
git_am_opt=
|
git_am_opt=
|
||||||
rebase_root=
|
rebase_root=
|
||||||
|
|
||||||
|
@ -289,8 +290,15 @@ do
|
||||||
esac
|
esac
|
||||||
do_merge=t
|
do_merge=t
|
||||||
;;
|
;;
|
||||||
|
-n|--no-stat)
|
||||||
|
diffstat=
|
||||||
|
;;
|
||||||
|
--stat)
|
||||||
|
diffstat=t
|
||||||
|
;;
|
||||||
-v|--verbose)
|
-v|--verbose)
|
||||||
verbose=t
|
verbose=t
|
||||||
|
diffstat=t
|
||||||
;;
|
;;
|
||||||
--whitespace=*)
|
--whitespace=*)
|
||||||
git_am_opt="$git_am_opt $1"
|
git_am_opt="$git_am_opt $1"
|
||||||
|
@ -426,18 +434,21 @@ then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$verbose"
|
|
||||||
then
|
|
||||||
echo "Changes from $mb to $onto:"
|
|
||||||
# We want color (if set), but no pager
|
|
||||||
GIT_PAGER='' git diff --stat --summary "$mb" "$onto"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Detach HEAD and reset the tree
|
# Detach HEAD and reset the tree
|
||||||
echo "First, rewinding head to replay your work on top of it..."
|
echo "First, rewinding head to replay your work on top of it..."
|
||||||
git checkout -q "$onto^0" || die "could not detach HEAD"
|
git checkout -q "$onto^0" || die "could not detach HEAD"
|
||||||
git update-ref ORIG_HEAD $branch
|
git update-ref ORIG_HEAD $branch
|
||||||
|
|
||||||
|
if test -n "$diffstat"
|
||||||
|
then
|
||||||
|
if test -n "$verbose"
|
||||||
|
then
|
||||||
|
echo "Changes from $mb to $onto:"
|
||||||
|
fi
|
||||||
|
# We want color (if set), but no pager
|
||||||
|
GIT_PAGER='' git diff --stat --summary "$mb" "$onto"
|
||||||
|
fi
|
||||||
|
|
||||||
# If the $onto is a proper descendant of the tip of the branch, then
|
# If the $onto is a proper descendant of the tip of the branch, then
|
||||||
# we just fast forwarded.
|
# we just fast forwarded.
|
||||||
if test "$mb" = "$branch"
|
if test "$mb" = "$branch"
|
||||||
|
|
|
@ -22,7 +22,8 @@ test_expect_success setup '
|
||||||
git checkout topic &&
|
git checkout topic &&
|
||||||
quick_one A &&
|
quick_one A &&
|
||||||
quick_one B &&
|
quick_one B &&
|
||||||
quick_one Z
|
quick_one Z &&
|
||||||
|
git tag start
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -41,4 +42,24 @@ test_expect_success 'rebase -m' '
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase --stat' '
|
||||||
|
git reset --hard start
|
||||||
|
git rebase --stat master >diffstat.txt &&
|
||||||
|
grep "^ fileX | *1 +$" diffstat.txt
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase w/config rebase.stat' '
|
||||||
|
git reset --hard start
|
||||||
|
git config rebase.stat true &&
|
||||||
|
git rebase master >diffstat.txt &&
|
||||||
|
grep "^ fileX | *1 +$" diffstat.txt
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase -n overrides config rebase.stat config' '
|
||||||
|
git reset --hard start
|
||||||
|
git config rebase.stat true &&
|
||||||
|
git rebase -n master >diffstat.txt &&
|
||||||
|
! grep "^ fileX | *1 +$" diffstat.txt
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue