Skip to contentSkip to conversation

how to make gitk to use specified history information

DISCUSSION Liu Yubao 2 participants 4 messages Jun 15, 2016

lore
Share & tools
lore

Liu Yubao

author
#0 lore raw

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

#1 lore raw
Quoted 11 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

author
#2 lore raw
Quoted 10 lines · Eric Raible
Quoted 8 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:

Quoted 8 lines
Quoted 3 lines

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 &

author
#3 lore raw

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

In reply to Eric Raible
Quoted 10 lines · Eric Raible
Quoted 8 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:

Quoted 8 lines
Quoted 3 lines

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.