On Mon, Feb 10, 2014 at 12:06 AM, Andrew Keller <and...@kellerfarm.com> wrote: > On Feb 8, 2014, at 10:19 PM, Dongsheng Song wrote: >> On Sun, Feb 9, 2014 at 12:29 AM, Andrew Keller <and...@kellerfarm.com> 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 >
Thanks, I hope this 'new feature' will translate into reality, and not take too long. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html