threads / discuss / 33380

RFC: Very useful script to SVG graph the git commits from a file orientated view

Subject: RFC: Very useful script to SVG graph the git commits from a file orientated view

## tl;dr

4 messages between Apr 4, 2013 and Apr 8, 2013.

replies: 3people: 2as markdown or json

John Tapsell· Apr 4, 2013, 12:36 UTC · lore
Hi,
  I made this script to help me see the logical connections between
commits.  It produces a .svg graph showing the commits that affected a
file.
For example, say you have the commits:

commit1 - modify hello.c commit2 - modify goodbye.c commit3 - modify hello.c and goodbye.c

It will draw a graph showing the first two commits as siblings, and commit3 as a child of commit1 and commit2.

I have found this very useful when squashing and rebasing development branches that have got a lot of "fix typo" and "fix" type commit messages. From the graph you can quickly see which commit they were fixing (the parent, in the graph).

Here is an example output, running it on kwin for the last 100 commits:
$ graph_git.pl --nofiles -100
http://imagebin.org/252754
And again with files for the last 10 commits:
$ graph_git.pl -10
http://imagebin.org/252756
(Note that it has tooltips)
JohnFlux
Jeremy Rosen· Apr 4, 2013, 12:46 UTC · re: John Tapsell · lore

Re: RFC: Very useful script to SVG graph the git commits from a file orientated view

very usefull indeed, where can I find it ? I have a big rebase/merge/reorganise work that is comming soon and that is going to be tremendously usefull...
    Cordialement
    Jérémy Rosen
fight key loggers : write some perl using vim
----- Mail original -----
Show 41 quoted lines
> Hi,
>   I made this script to help me see the logical connections between
> commits.  It produces a .svg graph showing the commits that affected
> a
> file.
> 
> For example, say you have the commits:
> 
> commit1 - modify hello.c
> commit2 - modify goodbye.c
> commit3 - modify hello.c and goodbye.c
> 
> It will draw a graph showing the first two commits as siblings, and
> commit3 as a child of commit1 and commit2.
> 
> I have found this very useful when squashing and rebasing development
> branches that have got a lot of "fix typo" and "fix"  type commit
> messages.  From the graph you can quickly see which commit they were
> fixing (the parent, in the graph).
> 
> Here is an example output, running it on kwin for the last 100
> commits:
> 
> $ graph_git.pl --nofiles -100
> 
> http://imagebin.org/252754
> 
> And again with files for the last 10 commits:
> 
> $ graph_git.pl -10
> 
> http://imagebin.org/252756
> 
> (Note that it has tooltips)
> 
> JohnFlux
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Jeremy Rosen· Apr 8, 2013, 10:49 UTC · re: John Tapsell · lore

Re: RFC: Very useful script to SVG graph the git commits from a file orientated view

so, I started using it this WE for my big rebase 
I had aproximately 130 non-merge commits in my branch, a feature branch in which I had regularly merged master, but I needed to rebase everything and then reorganise most commits to make the whole thing reviewable
* merge bug-fix with the commit that introduced the bug
* change sloppy commit messages
* separate sloppy commit into multiple commits
I did my initial rebase and I am now doing repetitive "git rebase -i" to get everything going
your script is very usefull to me because it allows me to easily see the overall layout of things and figure what commit are "suspect" (touching files from different areas that have no reasons to be touched at the same time)
it also allows me to easily find commits that are highly connected to other ones and are the most likely to be problematic when reordering commits. Overall that script is awesome.
couple of ideas to refine things
* The tooltips are very handy, but it would be nice if the tooltip would activate on the whole commit ellipsis, not just the text inside the ellipsis
* I would love to have tooltips on the arrows too. when trying to follow what arrow is what file it makes things really handi
It would be nice if there were a way to filter only some files in the output... there probably is with the git-log like syntax but i'm not a master of that... hints would be welcome
is there a public repo for this script so I can point other people to it ?
    Cordialement
    Jérémy Rosen
fight key loggers : write some perl using vim
----- Mail original -----
> Opps, somehow I forgot to actually attach it.
> 
> It's now attached
> 

← back to recent threads