Subject: Re: Effectively tracing project contributions with git

From: Joseph Wakeling <[email-masked]>
Date: Sun, 13 Sep 2009 16:30:10 +0200

Theodore Tso wrote:
> This will display all of the diffs on file (pathname) XXX by contributor YYY:
> 
> 	git log -p --author=YYY XXX 
> 
> You might also find the diffstats useful:
> 
> 	git log --stat --author=YYY XXX
> 
> Or if you want *only* the diffstats for the file in question, you might try:
> 
> 	git log --stat --pretty=format: --author=YYY XXX | grep XXX

That's absolutely brilliant -- using these commands makes my task much
easier.

As for reasons -- there are several.  For the FOSS project, here is a
potential relicensing issue (guarding against future problems rather
than addressing present ones) and indeed I'm going about it the way you
suggest -- getting consent from as many contributors as possible.
Despite that, it seems useful to have up-to-date file-by-file credits
and copyright notices.

Personally, there's also a degree of curiosity and wanting to learn some
of the more complex and advanced possibilities of git -- and also
basically wanting to see to what extent this task is possible.  How
fine-grained a degree of credit/blame can I extract for a given piece of
code?  And how far back in history? etc.

Finally, there's an aspect which has nothing to do with code but could
still be very interesting for some people in the git community.  I've
long been fascinated by DVCS as a collaborative tool and over the last
year have been part of the Liquid Publications project:
http://project.liquidpub.org/

... that is trying to develop new models for scientific collaboration
and publishing/sharing of results and ideas.  One of my interests is to
see whether DVCS can be harnessed to enable better and more open
collaboration and micro-credit for scientific contributions.

We've already set up a project on Launchpad to try to turn one of our
project reports into a review paper via open collaboration:
https://code.launchpad.net/~webdrake/liquidpub/peer-review

... and I'll shortly be setting up a GitHub branch for another,
from-scratch article directly on DVCS and their potential applications
(the use of different VCS is deliberate: one thing I'll be doing is
testing different VCS and their different features).  This is something
I'd very much like to have git (and bzr, and hg) community members
involved in.

I was going to write to the git community about this at a later date
once I'd got more stuff prepared, but since the present discussion could
generate useful material for that it seems only fair to be open.

The FOSS project stuff has nothing to do with that, but I certainly see
it as a good experience to feed the LiquidPub research.

Thanks for the useful advice and best wishes,

    -- Joe