This simplifies git_get_head_hash a lot; the method might eventually even go away. I haven't checked whether this causes an IO performance regression by instantiating a new Git repository instance, but in the end Git->repository will be as fast as possible and do no eager disk accesses. No benchmarking yet at this stage. Signed-off-by: Lea Wiemann <LeWiemann@xxxxxxxxx> --- Per your request without the cleanup. I won't submit the cleanup patch separately, but I assume it will get cleaned up eventually when someone touches that function. gitweb/gitweb.perl | 20 ++++++-------------- 1 files changed, 6 insertions(+), 14 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 57a1905..0ed3d6e 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -16,6 +16,7 @@ use Encode; use Fcntl ':mode'; use File::Find qw(); use File::Basename qw(basename); +use Git; binmode STDOUT, ':utf8'; BEGIN { @@ -1508,20 +1509,11 @@ sub git_cmd_str { # get HEAD ref of given project as hash sub git_get_head_hash { my $project = shift; - my $o_git_dir = $git_dir; - my $retval = undef; - $git_dir = "$projectroot/$project"; - if (open my $fd, "-|", git_cmd(), "rev-parse", "--verify", "HEAD") { - my $head = <$fd>; - close $fd; - if (defined $head && $head =~ /^([0-9a-fA-F]{40})$/) { - $retval = $1; - } - } - if (defined $o_git_dir) { - $git_dir = $o_git_dir; - } - return $retval; + my $directory = "$projectroot/$project"; + # Legacy side effect on $git_dir. This will eventually go + # away as the global $git_dir is eliminated. + $git_dir = $directory if (!defined $git_dir); + Git->repository(Directory => $directory)->parse_rev("HEAD"); } # get type of given object -- 1.5.5.GIT -- 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