* [PATCH] gitweb.perl - Optionally send archives as .zip files
@ 2007-05-20 15:46 Mark Levedahl
2007-05-22 12:28 ` Petr Baudis
0 siblings, 1 reply; 3+ messages in thread
From: Mark Levedahl @ 2007-05-20 15:46 UTC (permalink / raw)
To: git; +Cc: Mark Levedahl
git-archive already knows how to generate an archive as a tar or a zip
file, but gitweb did not. zip archvies are much more usable in a Windows
environment due to native support and this patch allows a site admin the
option to deliver zip rather than tar files. The selection is done by
inserting
$feature{'snapshot'}{'default'} = ['x-zip', 'zip', ''];
in gitweb_config.perl.
Tar files remain the default option.
Signed-off-by: Mark Levedahl <mdl123@verizon.net>
---
gitweb/gitweb.perl | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 21864c6..273cad2 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -129,7 +129,7 @@ our %feature = (
# $feature{'snapshot'}{'default'} = [undef];
# To have project specific config enable override in $GITWEB_CONFIG
# $feature{'snapshot'}{'override'} = 1;
- # and in project config gitweb.snapshot = none|gzip|bzip2;
+ # and in project config gitweb.snapshot = none|gzip|bzip2|zip;
'snapshot' => {
'sub' => \&feature_snapshot,
'override' => 0,
@@ -227,6 +227,8 @@ sub feature_snapshot {
return ('x-gzip', 'gz', 'gzip');
} elsif ($val eq 'bzip2') {
return ('x-bzip2', 'bz2', 'bzip2');
+ } elsif ($val eq 'zip') {
+ return ('x-zip', 'zip', '');
} elsif ($val eq 'none') {
return ();
}
@@ -3912,19 +3914,26 @@ sub git_snapshot {
$hash = git_get_head_hash($project);
}
- my $filename = decode_utf8(basename($project)) . "-$hash.tar.$suffix";
+ my $git = git_cmd_str();
+ my $name = $project;
+ $name =~ s/\047/\047\\\047\047/g;
+ my $filename = decode_utf8(basename($project));
+ my $cmd;
+ if ($suffix eq 'zip') {
+ $filename .= "-$hash.$suffix";
+ $cmd = "$git archive --format=zip --prefix=\'$name\'/ $hash";
+ } else {
+ $filename .= "-$hash.tar.$suffix";
+ $cmd = "$git archive --format=tar --prefix=\'$name\'/ $hash | $command";
+ }
print $cgi->header(
-type => "application/$ctype",
-content_disposition => 'inline; filename="' . "$filename" . '"',
-status => '200 OK');
- my $git = git_cmd_str();
- my $name = $project;
- $name =~ s/\047/\047\\\047\047/g;
- open my $fd, "-|",
- "$git archive --format=tar --prefix=\'$name\'/ $hash | $command"
- or die_error(undef, "Execute git-tar-tree failed");
+ open my $fd, "-|", $cmd
+ or die_error(undef, "Execute git-archive failed");
binmode STDOUT, ':raw';
print <$fd>;
binmode STDOUT, ':utf8'; # as set at the beginning of gitweb.cgi
--
1.5.2.rc3.95.gb3c7e
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] gitweb.perl - Optionally send archives as .zip files
2007-05-20 15:46 [PATCH] gitweb.perl - Optionally send archives as .zip files Mark Levedahl
@ 2007-05-22 12:28 ` Petr Baudis
2007-05-23 22:09 ` Junio C Hamano
0 siblings, 1 reply; 3+ messages in thread
From: Petr Baudis @ 2007-05-22 12:28 UTC (permalink / raw)
To: Mark Levedahl; +Cc: git
Hi,
On Sun, May 20, 2007 at 05:46:46PM CEST, Mark Levedahl wrote:
> git-archive already knows how to generate an archive as a tar or a zip
> file, but gitweb did not. zip archvies are much more usable in a Windows
> environment due to native support and this patch allows a site admin the
> option to deliver zip rather than tar files. The selection is done by
> inserting
>
> $feature{'snapshot'}{'default'} = ['x-zip', 'zip', ''];
>
> in gitweb_config.perl.
>
> Tar files remain the default option.
>
> Signed-off-by: Mark Levedahl <mdl123@verizon.net>
Acked-by: Petr Baudis <pasky@suse.cz>
Maybe the code should decide based on program value being 'zip' rather
than suffix value, but that's just dubious nit-picking.
> @@ -3912,19 +3914,26 @@ sub git_snapshot {
> $hash = git_get_head_hash($project);
> }
>
> - my $filename = decode_utf8(basename($project)) . "-$hash.tar.$suffix";
> + my $git = git_cmd_str();
> + my $name = $project;
> + $name =~ s/\047/\047\\\047\047/g;
By the way, this really looks like an entry to our very own would-be
"git obfuscation of the month" contest. Why did whoever made the code
not just write that ' there? (I know it's been in the original code
too.)
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Ever try. Ever fail. No matter. // Try again. Fail again. Fail better.
-- Samuel Beckett
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] gitweb.perl - Optionally send archives as .zip files
2007-05-22 12:28 ` Petr Baudis
@ 2007-05-23 22:09 ` Junio C Hamano
0 siblings, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2007-05-23 22:09 UTC (permalink / raw)
To: Petr Baudis; +Cc: Mark Levedahl, git
Petr Baudis <pasky@suse.cz> writes:
> Hi,
>
> On Sun, May 20, 2007 at 05:46:46PM CEST, Mark Levedahl wrote:
>> git-archive already knows how to generate an archive as a tar or a zip
>> file, but gitweb did not. zip archvies are much more usable in a Windows
>> environment due to native support and this patch allows a site admin the
>> option to deliver zip rather than tar files. The selection is done by
>> inserting
>>
>> $feature{'snapshot'}{'default'} = ['x-zip', 'zip', ''];
>>
>> in gitweb_config.perl.
>>
>> Tar files remain the default option.
>>
>> Signed-off-by: Mark Levedahl <mdl123@verizon.net>
>
> Acked-by: Petr Baudis <pasky@suse.cz>
Ok, will apply to 'master'.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-05-23 22:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-20 15:46 [PATCH] gitweb.perl - Optionally send archives as .zip files Mark Levedahl
2007-05-22 12:28 ` Petr Baudis
2007-05-23 22:09 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).