threads / discuss / 21633

how to make gitk to use specified history information

Subject: how to make gitk to use specified history information

## tl;dr

4 messages between Nov 16, 2009 and Nov 16, 2009.

replies: 3people: 2as markdown or json

Liu Yubao· Nov 16, 2009, 07:51 UTC · lore
Hi,
I want to obtain an outline of history information, for example:
  a - b - c - d - h -i -j
   \         /
    e- f - g
I simplify the graph like this:
  a - c - d - j
    \    /
      g
That's to say, I skip all commits that
  * have only one parent, and
  * have only one child, and
  * its child has only one parent

I checked `git help rev-list` but didn't find this feature, so I write a little script[1] to parse output of `git rev-list --parents --full-history --sparse --all` and get the simplified history: j d d c g c a g a

Now how can I make gitk to show this simpilified history? I have tried GraphViz but the history information is still so large that GraphViz crashes.

[1] http://jff.googlecode.com/svn/trunk/utils/git-branch-graph.pl
Best regards,
Liu Yubao
Eric Raible· Nov 16, 2009, 08:08 UTC · re: Liu Yubao · lore

Re: how to make gitk to use specified history information

Liu Yubao <yubao.liu <at> gmail.com> writes:
Show 11 quoted lines
> I want to obtain an outline of history information, for example:
> 
>   a - b - c - d - h -i -j
>    \         /
>     e- f - g
> 
> I simplify the graph like this:
> 
>   a - c - d - j
>     \    /
>       g
"gitk --simplify-by-decoration"?
- Eric
Liu Yubao· Nov 16, 2009, 08:38 UTC · re: Eric Raible · lore

Re: how to make gitk to use specified history information

Eric Raible wrote:
Show 18 quoted lines
> Liu Yubao <yubao.liu <at> gmail.com> writes:
> 
>> I want to obtain an outline of history information, for example:
>>
>>   a - b - c - d - h -i -j
>>    \         /
>>     e- f - g
>>
>> I simplify the graph like this:
>>
>>   a - c - d - j
>>     \    /
>>       g
> 
> "gitk --simplify-by-decoration"?
> 
> - Eric
> 

Thanks, but that gets "a - g - j" which isn't what I want. (g and j are heads of two branches).

The command sequence to produce that full revision graph:

#!/bin/bash d=/tmp/t$$ rm -rf $d && mkdir $d && cd $d || exit 1

doit () {
  for s in $@; do
    echo $s >> a.txt 
    git add a.txt
    git commit -q -m $s
  done
}

git init doit a b c git checkout -b t HEAD~2 doit e f g git checkout master git merge t doit d h i j

gitk &
Liu Yubao· Nov 16, 2009, 10:58 UTC · re: Eric Raible · lore

dirty code to get an outline of commit history with gitk [Was: how to make gitk to use specified history information]

Eric Raible wrote:
Show 18 quoted lines
> Liu Yubao <yubao.liu <at> gmail.com> writes:
> 
>> I want to obtain an outline of history information, for example:
>>
>>   a - b - c - d - h -i -j
>>    \         /
>>     e- f - g
>>
>> I simplify the graph like this:
>>
>>   a - c - d - j
>>     \    /
>>       g
> 
> "gitk --simplify-by-decoration"?
> 
> - Eric
> 
Hi, I get a very dirty implementation, see
http://jff.googlecode.com/svn/trunk/utils/git-branch-graph/

http://jff.googlecode.com/files/gitk-branch-graph--all.png http://jff.googlecode.com/files/gitk--all.png

These are just to show my expectation, the code is very very very dirty, I hope git and gitk will add this feature in an elegant and efficent way.

← back to recent threads