# [PATCH] disable merge summaries if they are disabled

9 messages from 2007-05-23 to 2007-05-23. Participants: Alex Riesen, Junio C Hamano.
Thread: https://gitlist.dev/t/8280

## Alex Riesen, 2007-05-23 15:28

Subject: [PATCH] disable merge summaries if they are disabled
Message-ID: <81b0412b0705230828s7fcdd836gf3bb92000d8ebd79@mail.gmail.com>
URL: https://gitlist.dev/e/81b0412b0705230828s7fcdd836gf3bb92000d8ebd79%40mail.gmail.com

```
Otherwise the merge.summary option has no visible effect.

---
 git-merge.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)


From 20ef81ca3b30a4c96906b3512ca1b52d2bec3698 Mon Sep 17 00:00:00 2001
From: Alex Riesen <raa.lkml@gmail.com>
Date: Wed, 23 May 2007 15:52:16 +0200
Subject: [PATCH] disable merge summaries if they are disabled

---
 git-merge.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/git-merge.sh b/git-merge.sh
index 351676f..7fbe03a 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -121,6 +121,7 @@ merge_name () {
 case "$#" in 0) usage ;; esac
 
 have_message=
+test $(git-config merge.summary) = false && no_summary=t
 while case "$#" in 0) break ;; esac
 do
 	case "$1" in
-- 
1.5.2.784.gb18c


```

## Alex Riesen, 2007-05-23 16:03

Subject: Re: [PATCH] disable merge summaries if they are disabled
Message-ID: <81b0412b0705230903j197c2b8ewfbf81002c0e6b5be@mail.gmail.com>
URL: https://gitlist.dev/e/81b0412b0705230903j197c2b8ewfbf81002c0e6b5be%40mail.gmail.com
In-Reply-To: <81b0412b0705230828s7fcdd836gf3bb92000d8ebd79@mail.gmail.com>

```
Otherwise the merge.summary option has no visible effect.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>

---

Forgot the sign-off.

 git-merge.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)


From 20ef81ca3b30a4c96906b3512ca1b52d2bec3698 Mon Sep 17 00:00:00 2001
From: Alex Riesen <raa.lkml@gmail.com>
Date: Wed, 23 May 2007 15:52:16 +0200
Subject: [PATCH] disable merge summaries if they are disabled

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 git-merge.sh |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/git-merge.sh b/git-merge.sh
index 351676f..7fbe03a 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -121,6 +121,7 @@ merge_name () {
 case "$#" in 0) usage ;; esac
 
 have_message=
+test $(git-config merge.summary) = false && no_summary=t
 while case "$#" in 0) break ;; esac
 do
 	case "$1" in
-- 
1.5.2.787.g56770


```

## Junio C Hamano, 2007-05-23 18:22

Subject: Re: [PATCH] disable merge summaries if they are disabled
Message-ID: <7vhcq32yda.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vhcq32yda.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <81b0412b0705230828s7fcdd836gf3bb92000d8ebd79@mail.gmail.com>

```
"Alex Riesen" <raa.lkml@gmail.com> writes:

> Otherwise the merge.summary option has no visible effect.

I suspect you are mistaking a different merge summary.  The
option affects fmt-merge-msg, iow, the shortlog looking summary
that appears as the commit message in a merge commit.

The command line parameter --no-summary inhibits the diffstat
given to the terminal after "git-pull/git-merge" is made.

```

## Alex Riesen, 2007-05-23 19:58

Subject: Re: [PATCH] disable merge summaries if they are disabled
Message-ID: <20070523195823.GA2554@steel.home>
URL: https://gitlist.dev/e/20070523195823.GA2554%40steel.home
In-Reply-To: <7vhcq32yda.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano, Wed, May 23, 2007 20:22:57 +0200:
> "Alex Riesen" <raa.lkml@gmail.com> writes:
> 
> > Otherwise the merge.summary option has no visible effect.
> 
> I suspect you are mistaking a different merge summary.  The
> option affects fmt-merge-msg, iow, the shortlog looking summary
> that appears as the commit message in a merge commit.
> 
> The command line parameter --no-summary inhibits the diffstat
> given to the terminal after "git-pull/git-merge" is made.
> 

I did it again, didn't I?! :)

```

## Alex Riesen, 2007-05-23 20:02

Subject: [PATCH] Add a configuration option to control diffstat after merge
Message-ID: <20070523200223.GB2554@steel.home>
URL: https://gitlist.dev/e/20070523200223.GB2554%40steel.home
In-Reply-To: <20070523195823.GA2554@steel.home>

```
The diffstat can be controlled either with command-line options
(--summary|--no-summary) or with merge.diffstat. The default is
left as it was: diffstat is active by default.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---

I have to explain the implementation a bit: in Windows, every exec is
*very* expensive, so I tried to avoid a call to git-config as long as
possible. The stupid OS is my reason for this change, actually:
diffstat not just takes too long. It also takes a *long* while before
the diffstat even starts!

 Documentation/git-merge.txt     |    2 +-
 Documentation/merge-options.txt |    4 ++++
 git-merge.sh                    |   18 ++++++++++++------
 git-pull.sh                     |    3 +++
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 9c08efa..912ef29 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -9,7 +9,7 @@ git-merge - Join two or more development histories together
 SYNOPSIS
 --------
 [verse]
-'git-merge' [-n] [--no-commit] [--squash] [-s <strategy>]...
+'git-merge' [-n] [--summary] [--no-commit] [--squash] [-s <strategy>]...
 	[-m <msg>] <remote> <remote>...
 
 DESCRIPTION
diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
index 182cef5..56f1d8d 100644
--- a/Documentation/merge-options.txt
+++ b/Documentation/merge-options.txt
@@ -1,3 +1,7 @@
+--summary::
+	Show a diffstat at the end of the merge. The diffstat is also
+	controlled by the configuration option merge.diffstat.
+
 -n, \--no-summary::
 	Do not show diffstat at the end of the merge.
 
diff --git a/git-merge.sh b/git-merge.sh
index 351676f..80f7de8 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-USAGE='[-n] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commit>+'
+USAGE='[-n] [--summary] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commit>+'
 
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
@@ -88,12 +88,11 @@ finish () {
 	'')
 		;;
 	?*)
-		case "$no_summary" in
-		'')
+		if test "$show_diffstat" = t
+		then
 			# We want color (if set), but no pager
 			GIT_PAGER='' git-diff --stat --summary -M "$head" "$1"
-			;;
-		esac
+		fi
 		;;
 	esac
 }
@@ -126,7 +125,9 @@ do
 	case "$1" in
 	-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
 		--no-summa|--no-summar|--no-summary)
-		no_summary=t ;;
+		show_diffstat=false ;;
+	--summary)
+		show_diffstat=t ;;
 	--sq|--squ|--squa|--squas|--squash)
 		squash=t no_commit=t ;;
 	--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
@@ -168,6 +169,11 @@ do
 	shift
 done
 
+if test -z "$show_diffstat"; then
+    test "$(git-config merge.diffstat)" = false && show_diffstat=false
+    test -z "$show_diffstat" && show_diffstat=t
+fi
+
 # This could be traditional "merge <msg> HEAD <commit>..."  and the
 # way we can tell it is to see if the second token is HEAD, but some
 # people might have misused the interface and used a committish that
diff --git a/git-pull.sh b/git-pull.sh
index a3665d7..ba0ca07 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -22,6 +22,9 @@ do
 	-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
 		--no-summa|--no-summar|--no-summary)
 		no_summary=-n ;;
+	--summary)
+		no_summary=$1
+		;;
 	--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
 		no_commit=--no-commit ;;
 	--sq|--squ|--squa|--squas|--squash)
-- 
1.5.2.36.g04e2-dirty

```

## Junio C Hamano, 2007-05-23 20:03

Subject: Re: [PATCH] disable merge summaries if they are disabled
Message-ID: <7vd50r2tpa.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vd50r2tpa.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20070523195823.GA2554@steel.home>

```
Alex Riesen <raa.lkml@gmail.com> writes:

> Junio C Hamano, Wed, May 23, 2007 20:22:57 +0200:
>> "Alex Riesen" <raa.lkml@gmail.com> writes:
>> 
>> > Otherwise the merge.summary option has no visible effect.
>> 
>> I suspect you are mistaking a different merge summary.  The
>> option affects fmt-merge-msg, iow, the shortlog looking summary
>> that appears as the commit message in a merge commit.
>> 
>> The command line parameter --no-summary inhibits the diffstat
>> given to the terminal after "git-pull/git-merge" is made.
>> 
>
> I did it again, didn't I?! :)

You could argue that it is not your fault but is a faulty and
misleading documentation, if you supply a patch to clarify it
;-).

```

## Junio C Hamano, 2007-05-23 20:18

Subject: Re: [PATCH] Add a configuration option to control diffstat after merge
Message-ID: <7v646j2t1e.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v646j2t1e.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20070523200223.GB2554@steel.home>

```
Alex Riesen <raa.lkml@gmail.com> writes:

> The diffstat can be controlled either with command-line options
> (--summary|--no-summary) or with merge.diffstat. The default is
> left as it was: diffstat is active by default.
>
> Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
> ---
>
> I have to explain the implementation a bit: in Windows, every exec is
> *very* expensive, so I tried to avoid a call to git-config as long as
> possible. The stupid OS is my reason for this change, actually:
> diffstat not just takes too long. It also takes a *long* while before
> the diffstat even starts!

Even on Linux, if your project is well modularized and your
workflow is "merge small and merge often" like the kernel is, it
is not unusual that the final diffstat takes much longer than a
merge.  But the diffstat is not an eye-candy but is an important
safety measure from the workflow point of view.

> @@ -168,6 +169,11 @@ do
>  	shift
>  done
>  
> +if test -z "$show_diffstat"; then
> +    test "$(git-config merge.diffstat)" = false && show_diffstat=false
> +    test -z "$show_diffstat" && show_diffstat=t
> +fi

Isn't this hunk wrong?

[merge]
	diffstat = 0
        diffstat = false

should both mean "merge.diffstat is set to false".
"git config --bool" does that.

And when merge.diffstat does not appear in the configuration
file, "git config --bool merge.diffstat" exits non-zero.

if test -z "$show_diffstat"; then
    test "$(git-config --bool merge.diffstat)" = false && show_diffstat=false
    test -z "$show_diffstat" && show_diffstat=t
fi

```

## Alex Riesen, 2007-05-23 20:43

Subject: Re: [PATCH] Add a configuration option to control diffstat after merge
Message-ID: <20070523204312.GD2554@steel.home>
URL: https://gitlist.dev/e/20070523204312.GD2554%40steel.home
In-Reply-To: <7v646j2t1e.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano, Wed, May 23, 2007 22:18:05 +0200:
> Alex Riesen <raa.lkml@gmail.com> writes:
> 
> > The diffstat can be controlled either with command-line options
> > (--summary|--no-summary) or with merge.diffstat. The default is
> > left as it was: diffstat is active by default.
> >
> > Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
> > ---
> >
> > I have to explain the implementation a bit: in Windows, every exec is
> > *very* expensive, so I tried to avoid a call to git-config as long as
> > possible. The stupid OS is my reason for this change, actually:
> > diffstat not just takes too long. It also takes a *long* while before
> > the diffstat even starts!
> 
> Even on Linux, if your project is well modularized and your
> workflow is "merge small and merge often" like the kernel is, it
> is not unusual that the final diffstat takes much longer than a
> merge.  But the diffstat is not an eye-candy but is an important
> safety measure from the workflow point of view.

Can't have it on Windows. It makes me prefer git-am to git-merge.

> > @@ -168,6 +169,11 @@ do
> >  	shift
> >  done
> >  
> > +if test -z "$show_diffstat"; then
> > +    test "$(git-config merge.diffstat)" = false && show_diffstat=false
> > +    test -z "$show_diffstat" && show_diffstat=t
> > +fi
> 
> Isn't this hunk wrong?
> 

It is. Will resend in an hour, unless you beat me to it

> if test -z "$show_diffstat"; then
>     test "$(git-config --bool merge.diffstat)" = false && show_diffstat=false
>     test -z "$show_diffstat" && show_diffstat=t
> fi

Thanks!

```

## Alex Riesen, 2007-05-23 21:01

Subject: [PATCH] Add a configuration option to control diffstat after merge
Message-ID: <20070523210129.GE2554@steel.home>
URL: https://gitlist.dev/e/20070523210129.GE2554%40steel.home
In-Reply-To: <20070523204312.GD2554@steel.home>

```
The diffstat can be controlled either with command-line options
(--summary|--no-summary) or with merge.diffstat. The default is
left as it was: diffstat is active by default.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
Alex Riesen, Wed, May 23, 2007 22:43:12 +0200:
> > > +if test -z "$show_diffstat"; then
> > > +    test "$(git-config merge.diffstat)" = false && show_diffstat=false
> > > +    test -z "$show_diffstat" && show_diffstat=t
> > > +fi
> > 
> > Isn't this hunk wrong?
> > 
> 
> It is. Will resend in an hour, unless you beat me to it
> 
> > if test -z "$show_diffstat"; then
> >     test "$(git-config --bool merge.diffstat)" = false && show_diffstat=false
> >     test -z "$show_diffstat" && show_diffstat=t
> > fi
> 
> Thanks!
> 

 Documentation/git-merge.txt     |    2 +-
 Documentation/merge-options.txt |    4 ++++
 git-merge.sh                    |   18 ++++++++++++------
 git-pull.sh                     |    3 +++
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 9c08efa..912ef29 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -9,7 +9,7 @@ git-merge - Join two or more development histories together
 SYNOPSIS
 --------
 [verse]
-'git-merge' [-n] [--no-commit] [--squash] [-s <strategy>]...
+'git-merge' [-n] [--summary] [--no-commit] [--squash] [-s <strategy>]...
 	[-m <msg>] <remote> <remote>...
 
 DESCRIPTION
diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
index 182cef5..56f1d8d 100644
--- a/Documentation/merge-options.txt
+++ b/Documentation/merge-options.txt
@@ -1,3 +1,7 @@
+--summary::
+	Show a diffstat at the end of the merge. The diffstat is also
+	controlled by the configuration option merge.diffstat.
+
 -n, \--no-summary::
 	Do not show diffstat at the end of the merge.
 
diff --git a/git-merge.sh b/git-merge.sh
index 351676f..44e9b70 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-USAGE='[-n] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commit>+'
+USAGE='[-n] [--summary] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commit>+'
 
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
@@ -88,12 +88,11 @@ finish () {
 	'')
 		;;
 	?*)
-		case "$no_summary" in
-		'')
+		if test "$show_diffstat" = t
+		then
 			# We want color (if set), but no pager
 			GIT_PAGER='' git-diff --stat --summary -M "$head" "$1"
-			;;
-		esac
+		fi
 		;;
 	esac
 }
@@ -126,7 +125,9 @@ do
 	case "$1" in
 	-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
 		--no-summa|--no-summar|--no-summary)
-		no_summary=t ;;
+		show_diffstat=false ;;
+	--summary)
+		show_diffstat=t ;;
 	--sq|--squ|--squa|--squas|--squash)
 		squash=t no_commit=t ;;
 	--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
@@ -168,6 +169,11 @@ do
 	shift
 done
 
+if test -z "$show_diffstat"; then
+    test "$(git-config --bool merge.diffstat)" = false && show_diffstat=false
+    test -z "$show_diffstat" && show_diffstat=t
+fi
+
 # This could be traditional "merge <msg> HEAD <commit>..."  and the
 # way we can tell it is to see if the second token is HEAD, but some
 # people might have misused the interface and used a committish that
diff --git a/git-pull.sh b/git-pull.sh
index a3665d7..ba0ca07 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -22,6 +22,9 @@ do
 	-n|--n|--no|--no-|--no-s|--no-su|--no-sum|--no-summ|\
 		--no-summa|--no-summar|--no-summary)
 		no_summary=-n ;;
+	--summary)
+		no_summary=$1
+		;;
 	--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
 		no_commit=--no-commit ;;
 	--sq|--squ|--squa|--squas|--squash)
-- 
1.5.2.67.gbd3c2

```
