From: Junio C Hamano Date: Wed, 23 May 2007 20:18:05 GMT Subject: Re: [PATCH] Add a configuration option to control diffstat after merge Message-ID: <7v646j2t1e.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20070523200223.GB2554@steel.home> Alex Riesen 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 > --- > > 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