From: Philip Oakley Date: Tue, 25 Sep 2012 22:19:54 GMT Subject: Re: A generalization of git blame Message-ID: In-Reply-To: <89ccf5dd776edc648d488c20214e1105.squirrel@webmail.cs.wisc.edu> From: > I have been developing my git tool (based on the git internal API) > that > can find out all the commits that have changed a line for better > authorship. > > The reason is for my binary code authorship research, I use machine > learning to classify code authorship. To produce training data, I > start > with a source code repository with well-known author labels for each > line > and then compiling the project into binary. So, I am able to know the > authorship for binary code and then apply some machine learning > techniques. > > To get ground truth of authorship for each line, I start with > git-blame. > But later I find this is not sufficient because the last commit may > only > add comments or may only change a small part of the line, so that I > shouldn't attribute the line of code to the last author. I would suggest there is: - White space adjustment - Comment or documentation (assumes you can parse the 'code' to decide that it isn't executable code) - word changes within expressions - complete replacement of line (whole statement?) Custom & practice is the likely decider. > Of course, there > must be some debates on who can be the representative of a line of > code. > So what I would like to do is find out all the commits that have ever > changed a line, then I can try different approaches to summarize over > all > these commits to produce my final authorship label (or even tuple). > > I was wondering whether there have been similar debates over accurate > authorship in this community before and whether there may be other > people > interested in this work. I'd suggest looking at the various 'diff' formats, such as character diff, word diff, and line diff for discussions. > > Thanks > > --Xiaozhu > Philip