Re: [PATCH] fread does not return negative on error

From: Johannes Schindelin
Date: Wed Jun 24 2009 - 12:40:37 EST


Hi,

On Wed, 24 Jun 2009, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes:
>
> > This here script:
> >
> > -- snip --
> > for file in abspath.c alias.c cache.h color.c color.h config.c ctype.c \
> > environment.c exec_cmd.c exec_cmd.h help.c help.h levenshtein.c \
> > levenshtein.h pager.c parse-options.c parse-options.h path.c \
> > quote.c quote.h run-command.c run-command.h sigchain.c sigchain.h \
> > strbuf.c strbuf.h string.c string.h symbol.c symbol.h usage.c \
> > util.h wrapper.c
> > do
> > echo $file
> > git shortlog -n -s $file | head -n 2
> > done
>
> I have thought about suggesting this myself, and your output for many of
> the files matched my intuition, but some were grossly off, so I checked.
>
> The above procedure counts commits, and a one liner "s/char \*/const &/"
> weighs as heavily as the patch that implemented the whole thing, for a
> file that was done in one commit almost perfectly except that it needed a
> small constness fix. Summarizing output from "blame" for each file may
> give you a more meaningful results:
>
> # timestamp
> ts='[12][0-9][0-9][0-9]-[0-9][0-9]-[0-3][0-9] ..:..:.. [-+]....'
> # linenum
> lno='[1-9][0-9]*'
> git blame "$file" |
> sed -e 's/^[^ ]* *(\([^)]*[^ ]\) *'"$ts *$lno"').*/\1/' |
> sort |
> uniq -c |
> sort -r -n
>
> For example, I do not think it is fair to credit me for abspath.c more
> than Dmitry like this:
>
> > outputs this (note that a few files you mentioned are not in git.git):
> >
> > abspath.c
> > 2 Junio C Hamano
> > 1 Dmitry Potapov
>
> Initially Dmitry introduced this file with 5b8e6f8 (shrink git-shell by
> avoiding redundant dependencies, 2008-06-28) at 68 lines. J6t added 36
> lines for add_path() with 10c4c88 (Allow add_path() to add non-existent
> directories to the path, 2008-07-21), I added 12 lines to add a new
> function with 90b4a71 (is_directory(): a generic helper function,
> 2008-09-09) and then added a two-liner out-of-bounds-then-die check in
> 737e31a (make_absolute_path(): check bounds when seeing an overlong
> symlink, 2008-12-17).

Okay, a script similar to what you propose shows this:

abspath.c
67 Dmitry Potapov
36 Johannes Sixt
alias.c
49 Miklos Vajna
24 Jeff King
cache.h
305 Junio C Hamano
263 Linus Torvalds
color.c
136 Jeff King
29 Johannes Schindelin
color.h
10 Matthias Kestenholz
10 Jeff King
config.c
352 Linus Torvalds
284 Johannes Schindelin
ctype.c
15 René Scharfe
11 Linus Torvalds
environment.c
68 Linus Torvalds
34 Johannes Schindelin
exec_cmd.c
47 Michal Ostrowski
40 Steffen Prohaska
exec_cmd.h
5 Junio C Hamano
2 Steve Haslam
help.c
79 Linus Torvalds
73 Johannes Schindelin
help.h
25 Miklos Vajna
3 Alex Riesen
levenshtein.c
82 Johannes Schindelin
1 Samuel Tardieu
levenshtein.h
8 Johannes Schindelin
pager.c
34 Jeff King
25 Johannes Sixt
parse-options.c
386 Pierre Habouzit
81 René Scharfe
parse-options.h
151 Pierre Habouzit
14 René Scharfe
path.c
201 Junio C Hamano
83 Linus Torvalds
quote.c
189 Pierre Habouzit
106 Junio C Hamano
quote.h
31 Junio C Hamano
11 Christian Couder
run-command.c
173 Johannes Sixt
87 Shawn O. Pearce
run-command.h
46 Johannes Sixt
20 Shawn O. Pearce
sigchain.c
52 Jeff King
sigchain.h
11 Jeff King
strbuf.c
178 Johannes Schindelin
146 Pierre Habouzit
strbuf.h
93 Pierre Habouzit
16 Junio C Hamano
string.c
string.h
symbol.c
symbol.h
usage.c
31 Linus Torvalds
28 Petr Baudis
util.h
wrapper.c
220 Linus Torvalds
69 Junio C Hamano

Obviously I don't like these results as much, as I do not show up as often
anymore.

Besides, I think it is not fair to put me on top of the list of authors of
strbuf.c.

Ciao,
Dscho