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. > + 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? > + [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). > + 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 @@ 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. -- 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