Re: gitweb.cgi bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Feb 8, 2014, at 10:19 PM, Dongsheng Song wrote:
> On Sun, Feb 9, 2014 at 12:29 AM, Andrew Keller <andrew@xxxxxxxxxxxxxx> wrote:
>> On Feb 8, 2014, at 8:37 AM, Dongsheng Song wrote:
>> 
>>> I have an git repo PROJECT.git, the full path is /srv/repo/git/PROJECT.git,
>>> when I set git_base_url_list in gitweb.conf:
>>> 
>>> @git_base_url_list = qw(https://192.168.30.239/repo/git
>>>                           git@192.168.30.239:repo/git);
>>> 
>>> I got the result:
>>> 
>>> https://192.168.30.239/repo/git/PROJECT.git
>>> git@192.168.30.239:/PROJECT.git
>>> 
>>> This is wrong, it should be (without the leading '/')
>>> git@192.168.30.239:PROJECT.git
>> 
>> There is no way to generate a fetch url of 'git@192.168.30.239:PROJECT.git' in gitweb.
>> 
>> If one of the base urls was 'git@192.168.30.239:.', then you could get a fetch URL of 'git@192.168.30.239:./PROJECT.git'
>> 
>> In general, though, I like to stay away from relative paths.  Weird things can happen, like HTTP works but SSH doesn't, because the home directory for SSH changed because you used a different user.
> 
> What's about the following translate rules ?
> 
> git@192.168.30.239:  -> git@192.168.30.239:PROJECT.git
> git@192.168.30.239:/ -> git@192.168.30.239:/PROJECT.git
> git@192.168.30.239:/repo  -> git@192.168.30.239:/repo/PROJECT.git
> git@192.168.30.239:/repo/ -> git@192.168.30.239:/repo/PROJECT.git

I think that those translation rules are completely reasonable.

However, that's not what gitweb was originally designed to do.  What you're describing is a desire for a new feature, not the existence of a bug.  Basically, gitweb does not support relative paths when the base url does not contain part of the path already.

> I don't know Perl, but I think change the following translate code is
> not a hard work:
> 
>        # use per project git URL list in $projectroot/$project/cloneurl
>        # or make project git URL from git base URL and project name
>        my $url_tag = "URL";
>        my @url_list = git_get_project_url_list($project);
>        @url_list = map { "$_/$project" } @git_base_url_list unless @url_list;
>        foreach my $git_url (@url_list) {
>                next unless $git_url;
>                print format_repo_url($url_tag, $git_url);
>                $url_tag = "";
>        }

You're right - that is where the change should be applied, and the change you suggest is pretty simple.

However, I'm not confident that the syntax for a relative path is the same for all schemes.  (Others on the list, feel free to object.)  Since gitweb blindly concatenates the base URL and the relative project path, I'm worried that adding the proper functionality for one scheme will yield incorrect behavior for another scheme.

Can you move your repository to a subfolder?  Can use use absolute paths instead of relative paths?  Either of those approaches work around this issue.  I don't mean to coldly tell you that the solution is "don't do that", but on the surface, this seems like a nasty problem.

 - Andrew

--
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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]