[PATCH v3] gitk: Teach gitk to respect log.showroot

Subsystems: the rest

STALE3715d

5 messages, 3 authors, 2016-06-15 · open the first message on its own page

[PATCH v3] gitk: Teach gitk to respect log.showroot

From: Marcus Karlsson <hidden>
Date: 2016-06-15 22:52:10

In early days, all projects managed by git (except for git itself) had the
product of a fairly mature development history in their first commit, and
it was deemed unnecessary clutter to show additions of these thousands of
paths as a patch.

"git log" learned to show the patch for the initial commit without requiring
--root command line option at 0f03ca9 (config option log.showroot to show
the diff of root commits, 2006-11-23).

Teach gitk to respect log.showroot.

Signed-off-by: Marcus Karlsson <redacted>
---
Improved the commit message after suggestion from Zbigniew
Jedrzejewski-Szmek.

 gitk-git/gitk |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/gitk-git/gitk b/gitk-git/gitk
index 4cde0c4..40ea73f 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -7402,7 +7402,7 @@ proc addtocflist {ids} {
 }
 
 proc diffcmd {ids flags} {
-    global nullid nullid2
+    global log_showroot nullid nullid2
 
     set i [lsearch -exact $ids $nullid]
     set j [lsearch -exact $ids $nullid2]
@@ -7436,7 +7436,11 @@ proc diffcmd {ids flags} {
 	    lappend cmd HEAD
 	}
     } else {
-	set cmd [concat | git diff-tree -r $flags $ids]
+	set cmd [concat | git diff-tree -r]
+	if {$log_showroot eq true} {
+	    set cmd [concat $cmd --root]
+	}
+	set cmd [concat $cmd $flags $ids]
     }
     return $cmd
 }
@@ -11403,6 +11407,11 @@ catch {
     }
 }
 
+set log_showroot true
+catch {
+    set log_showroot [exec git config --get log.showroot]
+}
+
 if {[tk windowingsystem] eq "aqua"} {
     set mainfont {{Lucida Grande} 9}
     set textfont {Monaco 9}
-- 
1.7.7

Re: [PATCH v3] gitk: Teach gitk to respect log.showroot

From: Paul Mackerras <hidden>
Date: 2016-06-15 22:52:12

On Tue, Oct 04, 2011 at 10:08:13PM +0200, Marcus Karlsson wrote:
Teach gitk to respect log.showroot.
Sounds reasonable, ...
-	set cmd [concat | git diff-tree -r $flags $ids]
+	set cmd [concat | git diff-tree -r]
+	if {$log_showroot eq true} {
+	    set cmd [concat $cmd --root]
+	}
+	set cmd [concat $cmd $flags $ids]
but is there any reason not to do it like this?

	if {$log_showroot} {
	    lappend flags --root
	}
	set cmd [concat | git diff-tree -r $flags $ids]

I.e., do you particularly want the --root before the other flags?

Paul.

Re: [PATCH v3] gitk: Teach gitk to respect log.showroot

From: Marcus Karlsson <hidden>
Date: 2016-06-15 22:52:14

On Sat, Oct 08, 2011 at 05:47:04PM +1100, Paul Mackerras wrote:
On Tue, Oct 04, 2011 at 10:08:13PM +0200, Marcus Karlsson wrote:
quoted
Teach gitk to respect log.showroot.
Sounds reasonable, ...
quoted
-	set cmd [concat | git diff-tree -r $flags $ids]
+	set cmd [concat | git diff-tree -r]
+	if {$log_showroot eq true} {
+	    set cmd [concat $cmd --root]
+	}
+	set cmd [concat $cmd $flags $ids]
but is there any reason not to do it like this?

	if {$log_showroot} {
	    lappend flags --root
	}
	set cmd [concat | git diff-tree -r $flags $ids]

I.e., do you particularly want the --root before the other flags?

Paul.
Not really, that would work very well.

Marcus

Re: [PATCH v3] gitk: Teach gitk to respect log.showroot

From: Paul Mackerras <hidden>
Date: 2016-06-15 22:53:20

On Tue, Oct 04, 2011 at 10:08:13PM +0200, Marcus Karlsson wrote:
Teach gitk to respect log.showroot.
+set log_showroot true
+catch {
+    set log_showroot [exec git config --get log.showroot]
+}
Since I mostly use gitk on the kernel, I'd prefer that log_showroot
defaults to false if it isn't specified in the git config file.
Defaulting to false would also be the smaller change in gitk
behaviour.

Paul.

Re: [PATCH v3] gitk: Teach gitk to respect log.showroot

From: Zbigniew Jędrzejewski-Szmek <hidden>
Date: 2016-06-15 22:53:20

On 03/18/2012 11:53 PM, Paul Mackerras wrote:
On Tue, Oct 04, 2011 at 10:08:13PM +0200, Marcus Karlsson wrote:
quoted
Teach gitk to respect log.showroot.
quoted
+set log_showroot true
+catch {
+    set log_showroot [exec git config --get log.showroot]
+}
Since I mostly use gitk on the kernel, I'd prefer that log_showroot
defaults to false if it isn't specified in the git config file.
Defaulting to false would also be the smaller change in gitk
behaviour.
I agree that in case of the kernel repo, log.showroot=false is more 
useful. But this somewhat special use case should not decide the policy. 
First of all, as an experienced git user you know how to set the config 
option, if you dislike the default. This new default targets new users. 
Secondly, this option only matters when you scroll all the way down and 
click on first commit. Probably doesn't happen too often, since the time 
required to read in the other ~300000 commit messages is pretty big too. 
If you want to look at the root commit, it's probably because your 
project started recently and your history is short. Thirdly, consistency 
between git-log and gitk is important.

Zbyszek
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help