contacts: validate hunk length earlier
authorEric Sunshine <sunshine@sunshineco.com>
Fri, 9 Aug 2013 21:39:54 +0000 (17:39 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 13 Aug 2013 16:08:58 +0000 (09:08 -0700)
Rather than calling get_blame() with a zero-length hunk only to have it
rejected immediately, perform hunk-length validation earlier in order to
avoid calling get_blame() unnecessarily.

This is a preparatory step to simplify later patches which reduce the
number of git-blame invocations by collecting together all lines to
blame within a single file at a particular revision. By validating the
blame range early, the subsequent patch can more easily avoid adding
empty ranges at collection time.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/contacts/git-contacts
index d80f7d1b6e6928dc7d24a56720caf13220f95236..4fbb2ef85a76743780cfa1f81d0f9cdc75362e63 100755 (executable)
@@ -60,8 +60,6 @@ sub import_commits {
 
 sub get_blame {
        my ($commits, $source, $start, $len, $from) = @_;
-       $len = 1 unless defined($len);
-       return if $len == 0;
        open my $f, '-|',
                qw(git blame --porcelain -C), '-L', "$start,+$len",
                '--since', $since, "$from^", '--', $source or die;
@@ -90,7 +88,8 @@ sub scan_patches {
                } elsif (/^--- /) {
                        die "Cannot parse hunk source: $_\n";
                } elsif (/^@@ -(\d+)(?:,(\d+))?/ && $source) {
-                       get_blame($commits, $source, $1, $2, $id);
+                       my $len = defined($2) ? $2 : 1;
+                       get_blame($commits, $source, $1, $len, $id) if $len;
                }
        }
 }