Andy Whitcroft <apw@xxxxxxxxxxxx> writes: > I guess we could teach for-each-ref to output this as well? Perhaps > something like authorstamp? I think you can work with "author" or "committer" to grab the whole raw line. About the quoting and parsing, language specific quoting mode is meant for git-for-each-ref to produce a string that can be eval'ed in the host language. Think of the command as a tool to write a short program for you. The original is like this: # Get the last import timestamps opendir(D,"$git_dir/refs/heads"); while(defined(my $head = readdir(D))) { next if $head =~ /^\./; open(F,"$git_dir/refs/heads/$head") or die "Bad head branch: $head: $!\n"; chomp(my $ftag = <F>); close(F); open(F,"git-cat-file commit $ftag |"); while(<F>) { next unless /^author\s.*\s(\d+)\s[-+]\d{4}$/; $branch_date{$head} = $1; last; } close(F); } closedir(D); The purpose of the loop is to grab all branch heads, and grab author timestamp for all of them, _and_ stash that in %branch_date hash indexed by head name. You would want to have something like this executed for each branch: $refname = %(refname); $authorline = %(author); $authorline =~ /^author\s.*\s(\d+)\s[-+]\d{4}$/; $branch_date{$refname} = $1; So, you have the tool to write such a program for you, by doing something like this: my $template = ' $refname = %(refname); $authorline = %(author); $authorline =~ /^author\s.*\s(\d+)\s[-+]\d{4}$/; $branch_date{$refname} = $1; '; my @cmd = ('git-for-each-ref', '--perl', "--format=$template"); open I, '-|', @cmd, 'refs/heads'; my $script = join('',<I>); close I; my ($refname, $authorline); eval "$script"; The language specific quoting flag --perl affects how %() are interpolated into the generated program text as literals. That's why there is no quote around %(refname) or %(author) in the example above when defining the $template. - 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