Junio C Hamano wrote: > Andy Whitcroft <apw@xxxxxxxxxxxx> writes: > >> + my $fmt = '($ref, $author) = (%(refname), %(author));'; >> + open(H, "git-for-each-ref --perl --format='$fmt'|") or >> + die "Cannot run git-for-each-ref: $!\n"; >> + while(defined(my $entry = <H>)) { >> + my ($ref, $author); >> + eval($entry) || die "cannot eval refs list: $@"; >> + >> + next if ($ref !~ m@^refs/heads/(.*)$@); >> + my ($head) = ($1); >> + $author =~ /^.*\s(\d+)\s[-+]\d{4}$/; >> + $branch_date{$head} = $1; >> } >> - closedir(D); >> + close(H); >> } > > for-each-ref let's you limit the refs by leading path, so I do > not think "next if" inside the loop is needed if you say > > for-each-ref --perl --format=$fmt refs/heads Stupid boy :) > > Any reason you did not like my version that allows you to get > rid of the while() loop altogether? (hint: replace eval in my > example with "print" and see what you are evaling) To my mind we avoid the 'mozilla repo' issue of 1000's of heads busting some string length limit, or requiring some _vast_ string to hold it (as perl is likely to cope). Given we are sifting a small percentage of the data out of it. Let me know which way you want it and we'll go that way :). -apw - 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