threads / patch / 28547

v2gitk: Show patch for initial commit

Subject: [PATCH v2] gitk: Show patch for initial commit

## tl;dr

4 messages between Oct 1, 2011 and Oct 3, 2011. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Marcus Karlsson· Oct 1, 2011, 19:05 UTC · lore

Make gitk show the patch for the initial commit by default. Override with log.showroot.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
---
 gitk-git/gitk |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)
Show changes to gitk-git/gitk +11 −2
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
Zbigniew Jędrzejewski-Szmek· Oct 1, 2011, 21:03 UTC · re: Marcus Karlsson · lore

Re: [PATCH v2] gitk: Show patch for initial commit

[cc: Paul Mackerras]

Hi, I think that the historical explanation that Junio gave could be used as a basis for a commit message:

  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.
Also the gitk should be mentioned in the man-page for git-config log.showroot.
The current description of this option seems suboptimal because it explains
how it used to be, which is not really relevant:
  log.showroot
    If true, the initial commit will be shown as a big creation event. This is
    equivalent to a diff against an empty tree. Tools like git-log(1) or git-
    whatchanged(1), which normally hide the root commit will now show it. True by
    default.
This could be changed to:
    If true (the default), the root commit will be shown as a big creation
    event --- a diff against an empty tree. This diff can be very large for
    a project which was imported into git after some development history.
    If log.showroot is false tools like git-log(1), git-whatchanged(1), or
    gitk(1) will not display the added files.
    
Zbyszek
On 10/01/2011 09:05 PM, Marcus Karlsson wrote:
Show 46 quoted lines
> Make gitk show the patch for the initial commit by default.
> Override with log.showroot.
> 
> Signed-off-by: Marcus Karlsson<mk@acc.umu.se>
> ---
>   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}
Marcus Karlsson· Oct 3, 2011, 06:33 UTC · re: Zbigniew Jędrzejewski-Szmek · lore

Re: [PATCH v2] gitk: Show patch for initial commit

On Sat, Oct 01, 2011 at 11:03:18PM +0200, Zbigniew J??drzejewski-Szmek wrote:
Show 16 quoted lines
> [cc: Paul Mackerras]
> 
> Hi,
> I think that the historical explanation that Junio gave could
> be used as a basis for a commit message:
> 
>   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.

Absolutely, that would be a much better commit message. I'll wait and see if there are more comments and then resubmit.

Show 14 quoted lines
> Also the gitk should be mentioned in the man-page for git-config log.showroot.
> The current description of this option seems suboptimal because it explains
> how it used to be, which is not really relevant:
>   log.showroot
>     If true, the initial commit will be shown as a big creation event. This is
>     equivalent to a diff against an empty tree. Tools like git-log(1) or git-
>     whatchanged(1), which normally hide the root commit will now show it. True by
>     default.
> This could be changed to:
>     If true (the default), the root commit will be shown as a big creation
>     event --- a diff against an empty tree. This diff can be very large for
>     a project which was imported into git after some development history.
>     If log.showroot is false tools like git-log(1), git-whatchanged(1), or
>     gitk(1) will not display the added files.

I agree, but that feels like something that could be made into a separate patch. Or should I include that too?

	Marcus
Junio C Hamano· Oct 3, 2011, 17:44 UTC · re: Marcus Karlsson · lore

Re: [PATCH v2] gitk: Show patch for initial commit

Marcus Karlsson <mk@acc.umu.se> writes:
Show 17 quoted lines
>> Also the gitk should be mentioned in the man-page for git-config log.showroot.
>> The current description of this option seems suboptimal because it explains
>> how it used to be, which is not really relevant:
>>   log.showroot
>>     If true, the initial commit will be shown as a big creation event. This is
>>     equivalent to a diff against an empty tree. Tools like git-log(1) or git-
>>     whatchanged(1), which normally hide the root commit will now show it. True by
>>     default.
>> This could be changed to:
>>     If true (the default), the root commit will be shown as a big creation
>>     event --- a diff against an empty tree. This diff can be very large for
>>     a project which was imported into git after some development history.
>>     If log.showroot is false tools like git-log(1), git-whatchanged(1), or
>>     gitk(1) will not display the added files.
>
> I agree, but that feels like something that could be made into a
> separate patch. Or should I include that too?

Please make it a separate patch. A patch to Documentation/config.txt should go to git.git project, but gitk patch (whose "diff --git" line should read "diff --git a/gitk b/gitk") should go first to gitk.git project and then merged to my tree.

← back to recent threads