On Fri, Apr 19, 2013 at 12:08 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Felipe Contreras <felipe.contreras@xxxxxxxxx> writes: >> The code finds the changes of a commit, runs 'git blame' for each chunk >> to see which other commits are relevant, and then reports the author and >> signers. > > In general, I am not all that interested in adding anything new to > contrib/ as git.git has matured enough, but even if this will stay > outside my tree, there are a few interesting things to note to help > its eventual users. Why not add it to mainline git then? This tool, or a similar one, would certainly be useful in the git arsenal. >> + roles = roles.map do |person, role| >> + address = "%s <%s>" % person >> + [person, role] >> + end > > Is address being used elsewhere, or is this a remnant from an > earlier debugging or something? It's used later on; it creeped in. >> + [id, roles] >> + end >> + >> +end >> ... >> + File.open(file) do |f| >> + f.each do |line| >> + case line >> + when /^From (\h+) (.+)$/ >> + from = $1 >> + when /^---\s+(\S+)/ >> + source = $1 != '/dev/null' ? $1[2..-1] : nil > > This may need to be tightened if you want to use this on a > real-world project (git.git itself does not count ;-); you may see > something like: > > diff --git "a/a\"b" "b/a\"b" > > (I did an insane pathname 'a"b' to get the above example, but a more > realistic is a character outside ASCII). Suggestions on how to do that are welcome. >> + when /^@@\s-(\d+),(\d+)/ >> + get_blame(source, $1, $2, from) > > This may want to be a bit more careful for a hunk that adds to an > empty file, which will give you something like > > @@ -0,0 +1 @@ > @@ -0,0 +1,200 @@ Simple: return unless source and start and offset > Nobody sane would use -U0 when doing a format-patch, but if this > wants to accomodate such a patch as well, it needs to ignore a hunk > that only adds new lines. I'm not going to worry about it now. Cheers. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html