[PATCH] gitweb: Use git-show-ref instead of git-peek-remote
From: Jakub Narebski <hidden>
Date: 2016-08-11 19:44:57
Subsystem:
the rest · Maintainer:
Linus Torvalds
Use "git show-ref --dereference" instead of "git peek-remote ." in git_get_references. git-show-ref is faster than git-peek-remote; even faster is reading info/refs file (if it exists), but the information in info/refs can be stale. git-show-ref is available since v1.4.4; the output format is slightly different than git-peek-remote output format. Signed-off-by: Jakub Narebski <redacted> --- gitweb/gitweb.perl | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index f06cd3e..290751f 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl@@ -1154,14 +1154,15 @@ sub git_get_last_activity { sub git_get_references { my $type = shift || ""; my %refs; - # 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c refs/tags/v2.6.11 - # c39ae07f393806ccf406ef966e9a15afc43cc36a refs/tags/v2.6.11^{} - open my $fd, "-|", $GIT, "peek-remote", "$projectroot/$project/" + # 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c refs/tags/v2.6.11 + # c39ae07f393806ccf406ef966e9a15afc43cc36a refs/tags/v2.6.11^{} + open my $fd, "-|", git_cmd(), "show-ref", "--dereference", + ($type ? ("--", "refs/$type") : ()) # use -- <pattern> if $type or return; while (my $line = <$fd>) { chomp $line; - if ($line =~ m/^([0-9a-fA-F]{40})\trefs\/($type\/?[^\^]+)/) { + if ($line =~ m/^([0-9a-fA-F]{40}) refs\/($type\/?[^\^]+)/) { if (defined $refs{$1}) { push @{$refs{$1}}, $2; } else {
--
1.4.4.1