Skip to contentSkip to conversation

git-rebase: Add a -v option to show a diffstat of the changes upstream at the start of a rebase.

PATCH In review Robert Shearman 3 participants 4 messages Jun 15, 2016 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 git-rebase: Add a -v option to show a diffstat of the changes upstream at the start of a rebase.

---
 Documentation/git-rebase.txt |    5 ++++-
 git-rebase.sh                |   12 +++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)
Documentation/git-rebase.txt +4 -1
index 9d7bcaa..10f2924 100644
@@ -7,7 +7,7 @@ git-rebase - Rebase local commits to a n
 
 SYNOPSIS
 --------
-'git-rebase' [--merge] [--onto <newbase>] <upstream> [<branch>]
+'git-rebase' [-v] [--merge] [--onto <newbase>] <upstream> [<branch>]
 
 'git-rebase' --continue | --skip | --abort
 
@@ -121,6 +121,9 @@ OPTIONS
 	is used instead (`git-merge-recursive` when merging a single
 	head, `git-merge-octopus` otherwise).  This implies --merge.
 
+-v, \--verbose::
+	Display a diffstat of what changed upstream since the last rebase.
+
 include::merge-strategies.txt[]
 
 NOTES
git-rebase.sh +11 -1
index 413636e..546fa44 100755
@@ -3,7 +3,7 @@ #
 # Copyright (c) 2005 Junio C Hamano.
 #
 
-USAGE='[--onto <newbase>] <upstream> [<branch>]'
+USAGE='[-v] [--onto <newbase>] <upstream> [<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>
@@ -39,6 +39,7 @@ strategy=recursive
 do_merge=
 dotest=$GIT_DIR/.dotest-merge
 prec=4
+verbose=
 
 continue_merge () {
 	test -n "$prev_head" || die "prev_head must be defined"
@@ -190,6 +191,9 @@ do
 		esac
 		do_merge=t
 		;;
+	-v|--verbose)
+		verbose=t
+		;;
 	-*)
 		usage
 		;;
@@ -273,6 +277,12 @@ then
 	exit 0
 fi
 
+if test -n "$verbose"
+then
+	echo "Changes from $mb to $onto:"
+	git-diff-tree --stat --summary "$mb" "$onto"
+fi
+
 # Rewind the head to "$onto"; this saves our current head in ORIG_HEAD.
 git-reset --hard "$onto"
 
#1 lore raw

Documentation/git-rebase.txt OPTIONS · line 129

Quoted 11 lines · Robert Shearman
Documentation/git-rebase.txt +3 -0
@@ -121,6 +121,9 @@ OPTIONS
 	is used instead (`git-merge-recursive` when merging a single
 	head, `git-merge-octopus` otherwise).  This implies --merge.
 
+-v, \--verbose::
+	Display a diffstat of what changed upstream since the last rebase.
+
 include::merge-strategies.txt[]
 
 NOTES

I initially was a bit surprised that you did not show diff between onto and our HEAD (i.e. show the damages contained in the topic you are rebasing that will be inflicted on upstream), but I think your way of showing the upstream changes makes more sense. From the workflow point of view, this is for people who rebase instead of pull, and when pulling we show what the upstream did while we were looking the other way, so this naturally matches that behaviour for rebase. I would say it is a good thinking.

#2 lore raw

hoi :)

Quoted 14 lines · Junio C Hamano

Documentation/git-rebase.txt OPTIONS · line 126

Quoted 3 lines · Robert Shearman

+-v, \--verbose::

Documentation/git-rebase.txt +2 -0
+	Display a diffstat of what changed upstream since the last rebase.
+

I initially was a bit surprised that you did not show diff between onto and our HEAD (i.e. show the damages contained in the topic you are rebasing that will be inflicted on upstream), but I think your way of showing the upstream changes makes more sense. From the workflow point of view, this is for people who rebase instead of pull, and when pulling we show what the upstream did while we were looking the other way, so this naturally matches that behaviour for rebase. I would say it is a good thinking.

but perhaps we should use the same command line options as pull:
default to show the diffstat and use -n to suppress it?

Signature · 1 line
Martin Waitz
#3 lore raw
Quoted 2 lines · Martin Waitz

but perhaps we should use the same command line options as pull:
default to show the diffstat and use -n to suppress it?

I suspect that if your workflow is based on rebase, you usually fetch and rebase often enough to know what you are rebasing onto (the fact that this patch did not appear for a long time in rebase's existence is what makes me think so). So I think not showing diffstat is probably a sane default.

Opinions?