From mboxrd@z Thu Jan 1 00:00:00 1970 From: Toby White Subject: Re: gitweb / cg-export - corrected patch Date: Wed, 16 Aug 2006 01:23:41 +0100 Message-ID: <44E2658D.9020600@cam.ac.uk> References: <44E263DD.6030305@cam.ac.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: git@vger.kernel.org X-From: git-owner@vger.kernel.org Wed Aug 16 02:24:02 2006 Return-path: Envelope-to: gcvg-git@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GD9CR-0002ms-Uh for gcvg-git@gmane.org; Wed, 16 Aug 2006 02:24:00 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750727AbWHPAX4 (ORCPT ); Tue, 15 Aug 2006 20:23:56 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750728AbWHPAX4 (ORCPT ); Tue, 15 Aug 2006 20:23:56 -0400 Received: from ppsw-1.csi.cam.ac.uk ([131.111.8.131]:59537 "EHLO ppsw-1.csi.cam.ac.uk") by vger.kernel.org with ESMTP id S1750727AbWHPAXz (ORCPT ); Tue, 15 Aug 2006 20:23:55 -0400 X-Cam-SpamDetails: Not scanned X-Cam-AntiVirus: No virus found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from cpc2-cmbg1-0-0-cust798.cmbg.cable.ntl.com ([82.21.107.31]:60647 helo=[192.168.0.100]) by ppsw-1.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.151]:25) with esmtpsa (PLAIN:tow21) (TLSv1:DHE-RSA-AES256-SHA:256) id 1GD9CJ-0006Ii-4X (Exim 4.54) (return-path ); Wed, 16 Aug 2006 01:23:51 +0100 User-Agent: Thunderbird 1.5.0.5 (Macintosh/20060719) To: Toby White In-Reply-To: <44E263DD.6030305@cam.ac.uk> X-Enigmail-Version: 0.94.0.0 Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: Argh - sorry, patch got mangled somehow in previous message. Correct patch below. Toby --- gitweb.cgi.orig 2006-08-16 01:00:03.000000000 +0100 +++ gitweb.cgi 2006-08-16 00:58:38.000000000 +0100 @@ -180,6 +180,9 @@ } elsif ($action eq "tree") { git_tree(); exit; +} elsif ($action eq "export") { + git_export(); + exit; } elsif ($action eq "rss") { git_rss(); exit; @@ -1523,6 +1526,21 @@ git_footer_html(); } +sub git_export { + if (!defined $hash) { + $hash = git_read_head($project); + if (defined $file_name) { + my $base = $hash_base || $hash; + $hash = git_get_hash_by_path($base, $file_name, "tree"); + } + if (!defined $hash_base) { + $hash_base = $hash; + } + } + print $cgi->header(-type=>'application/x-tar', -Content-Encoding=>'x-gzip', -status=> '200 OK'); + exec "$gitbin/git-tar-tree $hash $project | gzip -c9" or die_error(undef, "Execute git-tar-tree failed."); +} + sub git_rss { # http://www.notestips.com/80256B3A007F2692/1/NAMO5P9UPQ open my $fd, "-|", "$gitbin/git-rev-list --max-count=150 " . git_read_head($project) or die_error(undef, "Open failed."); @@ -1779,6 +1797,7 @@ $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=tree;h=$co{'tree'};hb=$hash"), class => "list"}, $co{'tree'}) . "" . "" . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=tree;h=$co{'tree'};hb=$hash")}, "tree" ) . + "|" . $cgi->a({-href => "$my_uri/$project.tar.gz?" . esc_param("p=$project;a=export;h=$co{'tree'};hb=$hash")}, "tar. gz") . "" . "\n"; my $parents = $co{'parents'};