Felipe Contreras <felipe.contre...@gmail.com> 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to