git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GitStats] Bling bling or some statistics on the git.git repository

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jul 11, 2008, 23:33 UTC
Message-ID
<alpine.DEB.1.00.0807120028280.8950@racer>
In-Reply-To
<bd6139dc0807111550w1f4a9e5fl636df73572bd27de@mail.gmail.com>
Hi,
On Sat, 12 Jul 2008, Sverre Rabbelier wrote:
Show 14 quoted lines
> On Sat, Jul 12, 2008 at 12:07 AM, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> >> On Fri, Jul 11, 2008 at 11:22 PM, Johannes Schindelin Yeah, I wish 
> >> 'git log -C -C -M --numstat --sacrifice-chicken --pretty=format:%ae 
> >> --' would take care of that... That is, a git-blame like mechanism 
> >> that would detect such moves on a per-commit basis and report them 
> >> would be very useful to me.
> >
> > Well, the chicken (or better, a goat) should be sacrificed by you...  
> > The option I would call "--code-moves".
> 
> If you suggest I write up a patch to 'git log' I am afraid that would 
> require quite a bit more skill && knowledge of 'git log' than I have 
> (which is about Null :P).

If you were suspecting that I would write the patch once the semantics are finalized, you would be absolutely correct.

Show 8 quoted lines
> > But the semantics of that need to be sorted out in a shell script 
> > first; maybe like I outlined (if that was not coherent, please say 
> > so).
> 
> Python is one big shell script :P, so if you meant that it should be 
> part of GitStats (instead of part of 'git log', which I commented on 
> above), python would be just fine :). The concept was clear enough 
> though, I think I understand what you mean.

Fair enough. As long as you use a language that is easy to prototype quickly and dirtily in. Such as Python.

Show 12 quoted lines
> >> Very much so, but the former I figure can be easily done with 'git 
> >> log -C -C -M' I discovered (I need to parse it's output though, and 
> >> also determine what to do with moves statistics wise. Should changes 
> >> made due to moves just be ignored?)
> >
> > That is not very interesting, as we often move so small parts (think 
> > "one function") that -C -C -M does not trigger.
> 
> Right, why aim for the stuff when there's much more interesting fun out 
> there? If there was a --code-moves I agree with you that it would be a 
> lot more interesting to have than going with the current approach and 
> throwing in '-C -C -M'.
Let's go for it, then!
Show 18 quoted lines
> >> That sounds interesting, I won't need to actually do that though, I 
> >> already have a diff parser that gives me the lines added VS lines 
> >> deleted on a hunk-by-hunk basis. If it is a true move (e.g., code 
> >> removed in file X and added in file Y) it should be trivial to detect 
> >> that.
> >>
> >> Something along the lines of:
> >>  for hunk in added:
> >>   if hunk in deleted:
> >>     print("Over here!!")
> >
> > I think that is not enough, as a code move can mean that part of a
> > function was refactored into a function.  The consequence is often a
> > reindent, and possibly rewrapping.
> 
> Mhhh, such would be beyond the scope of implementing manually indeed,
> and should be left to the likes of a diff tool instead in order to
> prevent reinventing the wheel :).

That is why I was suggesting using the diff tool with munged input to find out what works best.

When that is done, I'll turn it into C.
Show 6 quoted lines
> > BTW I realized something else: your 
> > http://alturin.googlepages.com/full_activity.txt lists only 
> > "gitk-git/po/es.po" under git-git/po/.  And it has as many added as 
> > deleted lines.
> 
> Correct, that's because that is what 'git log' tells me.

I suspect that one big "git log" will not tell you enough. You probably need to make your tool aware (at least a little) about merges, just as you probably made it aware about parent/child relationships (to track the changes along renames)...

Ciao, Dscho

Previous: Sverre RabbelierNext: Sverre Rabbelier
Message 18 of 21 in “[GitStats] Bling bling or some statistics on the git.git repository”
  1. Sverre RabbelierJul 11, 2008
  2. Johannes SchindelinJul 11, 2008
  3. Johannes SchindelinJul 11, 2008
  4. Johannes SchindelinJul 11, 2008
  5. Sverre RabbelierJul 11, 2008
  6. Johannes SchindelinJul 11, 2008
  7. Sverre RabbelierJul 11, 2008
  8. Johannes SchindelinJul 11, 2008
  9. Sverre RabbelierJul 11, 2008
  10. Johannes SchindelinJul 11, 2008
  11. Add pretty format %aN which gives the author name, respecting .mailmapJohannes Schindelin, Jul 11, 2008
  12. Sverre RabbelierJul 11, 2008
  13. Johannes SchindelinJul 11, 2008
  14. Sverre RabbelierJul 12, 2008
  15. Sverre RabbelierJul 11, 2008
  16. Johannes SchindelinJul 11, 2008
  17. Sverre RabbelierJul 11, 2008
  18. Johannes SchindelinJul 11, 2008
  19. Sverre RabbelierJul 12, 2008
  20. Sverre RabbelierJul 12, 2008
  21. Johannes SchindelinJul 13, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.