threads / patch / 8481

patchgitweb: change filename/directory name of snapshots

Subject: [PATCH] gitweb: change filename/directory name of snapshots

## tl;dr

4 messages between Jun 7, 2007 and Jun 8, 2007. Diffs are folded; open one to read it.

replies: 3people: 4as markdown or json

Matthias Lederhofer· Jun 7, 2007, 09:27 UTC · lore

/.git or .git is removed from the project name and the basename of the remaining path is used as the beginning of the filename and as the directory in the archive.

The regexp will actually not strip off /.git or .git if there wouldn't be anything left after removing it.

Currently the full project name is used as directory in the archive and the basename is used as filename. For example a repository named foo/bar/.git will have a archive named .git-<version>.* and extract to foo/bar/.git. With this patch the file is named bar-<version>.* and extracts to bar.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
Imho the old behaviour does not make much sense but perhaps there are
users out there relying on the old behaviour.  OTOH relying on
a web interface not to change is quite bad, especially if you
could do the same using the git repository which would be much
more reliable.
---
 gitweb/gitweb.perl |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Show changes to gitweb/gitweb.perl +3 −1
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e92596c..1777393 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -4001,8 +4001,10 @@ sub git_snapshot {
 
 	my $git = git_cmd_str();
 	my $name = $project;
+	$name =~ s,([^/])/*\.git$,$1,;
+	$name = basename($name);
+	my $filename = to_utf8($name);
 	$name =~ s/\047/\047\\\047\047/g;
-	my $filename = to_utf8(basename($project));
 	my $cmd;
 	if ($suffix eq 'zip') {
 		$filename .= "-$hash.$suffix";
-- 
1.5.2.1.888.gd5e4e
Junio C Hamano· Jun 8, 2007, 08:43 UTC · re: Matthias Lederhofer · lore

Re: [PATCH] gitweb: change filename/directory name of snapshots

Matthias Lederhofer <matled@gmx.net> writes:
Show 12 quoted lines
> /.git or .git is removed from the project name and the
> basename of the remaining path is used as the beginning of
> the filename and as the directory in the archive.
>
> The regexp will actually not strip off /.git or .git if there
> wouldn't be anything left after removing it.
>
> Currently the full project name is used as directory in the
> archive and the basename is used as filename.  For example a
> repository named foo/bar/.git will have a archive named
> .git-<version>.* and extract to foo/bar/.git.  With this patch
> the file is named bar-<version>.* and extracts to bar.

Makes sense to me for "foo/bar/.git", but I am not sure if we would want to do this to "foo/bar.git". Opinions?

Jakub Narebski· Jun 8, 2007, 11:46 UTC · re: Junio C Hamano · lore

Re: [PATCH] gitweb: change filename/directory name of snapshots

Junio C Hamano wrote:
Show 17 quoted lines
> Matthias Lederhofer <matled@gmx.net> writes:
> 
>> /.git or .git is removed from the project name and the
>> basename of the remaining path is used as the beginning of
>> the filename and as the directory in the archive.
>>
>> The regexp will actually not strip off /.git or .git if there
>> wouldn't be anything left after removing it.
>>
>> Currently the full project name is used as directory in the
>> archive and the basename is used as filename.  For example a
>> repository named foo/bar/.git will have a archive named
>> .git-<version>.* and extract to foo/bar/.git.  With this patch
>> the file is named bar-<version>.* and extracts to bar.
> 
> Makes sense to me for "foo/bar/.git", but I am not sure if we
> would want to do this to "foo/bar.git".  Opinions?

I'd like to have snapshot called bar-<sha1>.tar.gz in first case, and bar.git-<sha1>.tar.gz (without stripping .git) in the second, but I wouldn't protest too much about having bar-<sha1>.tar.gz also in second case.

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Petr Baudis· Jun 8, 2007, 17:18 UTC · re: Junio C Hamano · lore

Re: [PATCH] gitweb: change filename/directory name of snapshots

On Fri, Jun 08, 2007 at 10:43:04AM CEST, Junio C Hamano wrote:
Show 17 quoted lines
> Matthias Lederhofer <matled@gmx.net> writes:
> 
> > /.git or .git is removed from the project name and the
> > basename of the remaining path is used as the beginning of
> > the filename and as the directory in the archive.
> >
> > The regexp will actually not strip off /.git or .git if there
> > wouldn't be anything left after removing it.
> >
> > Currently the full project name is used as directory in the
> > archive and the basename is used as filename.  For example a
> > repository named foo/bar/.git will have a archive named
> > .git-<version>.* and extract to foo/bar/.git.  With this patch
> > the file is named bar-<version>.* and extracts to bar.
> 
> Makes sense to me for "foo/bar/.git", but I am not sure if we
> would want to do this to "foo/bar.git".  Opinions?

I wouldn't personally really mind getting rid of the .git suffix in both cases. Yes, we are used to seeing the ".git" in the name, but I can't think of any other reasons not to chop it off.

Having the .git in the archive name might be even more confusing since there is a pseudo-convention (that I'm not sure anyone except me follows, so maybe not :) that repositories have .git in the name while working trees don't, and that tarball contains a working tree.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Ever try. Ever fail. No matter. // Try again. Fail again. Fail better.
		-- Samuel Beckett

← back to recent threads