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
SRSverre Rabbelier <alturin@gmail.com>
Date
Jul 11, 2008, 21:52 UTC
Message-ID
<bd6139dc0807111452x778759d4jd6ac71338974018e@mail.gmail.com>
In-Reply-To
<alpine.DEB.1.00.0807112215050.8950@racer>

On Fri, Jul 11, 2008 at 11:22 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

Show 10 quoted lines
> Hi,
>
> On Fri, 11 Jul 2008, Sverre Rabbelier wrote:
>
>> I temporarily modified the code to output %04d instead of %4d so that I
>> could do the following:
>>
>>        $ stats.py author -a > full_activity_sortable.txt
>
> You might be delighted to read up on the "-n" switch to sort(1).

Heh, yes, very much so :). I probably shouldof known there is such an option, but having the source at hand the change to '%4d' was the first thing that came to mind.

Show 5 quoted lines
>> A few highlights from the sorted file:
>>
>> $ cat full_activity_sortable.txt | sort | tail -n 20
>
> More intuitive would have been "sort -r | head -n 20", I guess.

Since that wouldof put the 'number one' at the top? Yeah, I guess it wouldof, nice one.

>> 0170:  2721+  1060- = refs.c
>
> I guess that 170 is the total number of commit touching that file, the "+"
> and "-" numbers the changes respectively?

Correct, I probably should have explain that. The +es are how many lines were added and the -es are the total amount of lines that were deleted, yup.

> I think quite a lot of our changes do code moves; this should be accounted
> for differently.

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.

>> For some reason you people can't seem to make up your mind about a
>> file that's not even 1500 lines in size ;).
>
> Heh.  We might need to change it once or twice, in the future.
*chuckles*, I'm curious why the Makefile is such a hard file to get right :).
Show 6 quoted lines
>> A note is in order here, this data was mined with "git log --num-stat"
>> so things like moving files and copying files are not accounted for.
>
> In my opinion it would be even more interesting to see code moves (i.e.
> not whole files).  For example, we moved some stuff from builtins into the
> library.  The real change here is not in the lines added and deleted.

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?)

Show 8 quoted lines
>> I thought about using git-blame to gather this info before, but it is
>> not the right tool for the job. If anyone else has any idea's on what
>> would be better please let me know and I'll happily dig into it :).
>
> I think that you need to analyze the diff directly.  One possible (quick
> 'n dirty) way would be to cut out long consecutive "+" parts of the hunks,
> replace the "-" by "+", and use "git diff --no-index" to do the hard part
> of searching for that code in the "-" part of the original diff.
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!!")
> Just an idea,
Much appreciated! I will look into this.
-- 
Cheers,

Sverre Rabbelier
Previous: Sverre RabbelierNext: Johannes Schindelin
Message 15 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.