* gitweb chokes on recursive symlink
@ 2007-07-27 8:23 Junio C Hamano
2007-07-27 22:57 ` Jakub Narebski
0 siblings, 1 reply; 2+ messages in thread
From: Junio C Hamano @ 2007-07-27 8:23 UTC (permalink / raw)
To: Jakub Narebski; +Cc: git
If somebody used to advertise his repository that physically
resides at /pub/lic.git/ as:
git://git.example.com/pub/lic.git/
but now wants to use --base-path to allow:
git://git.example.com/lic.git/
she can start git-daemon with --base-path option, like this:
git-daemon --base-path=/pub --export-all
During the transition, however, she would also want to allow
older URL as well. One natural way to achieve that is to create
a symlink:
ln -s /pub /pub/pub
so that a request to git://git.example.com/pub/lic.git/ is first
translated by --base-path to a request to /pub/pub/lic.git/
which goes to /pub/lic.git, thanks to the symlink.
So far so good.
However, gitweb chokes if there is such a symlink (File::Find
barfs with "/pub/pub is a recursive symbolic link" --- I think
this is because you use "follow_fast => 1").
As I happen to think using a symlink that goes up for backward
compatible URL support is a rather common practice, I think we
should do something about it. My gut feeling is that we could
simply ignore such symlinks.
What do you think about this issue?
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index b381692..c8ad84e 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1492,6 +1492,7 @@ sub git_get_projects_list {
File::Find::find({
follow_fast => 1, # follow symbolic links
+ follow_skip => 2, # ignore duplicates
dangling_symlinks => 0, # ignore dangling symlinks, silently
wanted => sub {
# skip project-list toplevel, if we get it.
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: gitweb chokes on recursive symlink
2007-07-27 8:23 gitweb chokes on recursive symlink Junio C Hamano
@ 2007-07-27 22:57 ` Jakub Narebski
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Narebski @ 2007-07-27 22:57 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Junio C Hamano wrote:
[cut explanation about why one would want something like below]
> ln -s /pub /pub/pub
[...]
> However, gitweb chokes if there is such a symlink (File::Find
> barfs with "/pub/pub is a recursive symbolic link" --- I think
> this is because you use "follow_fast => 1").
>
> As I happen to think using a symlink that goes up for backward
> compatible URL support is a rather common practice, I think we
> should do something about it. My gut feeling is that we could
> simply ignore such symlinks.
>
> What do you think about this issue?
>
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index b381692..c8ad84e 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -1492,6 +1492,7 @@ sub git_get_projects_list {
>
> File::Find::find({
> follow_fast => 1, # follow symbolic links
> + follow_skip => 2, # ignore duplicates
> dangling_symlinks => 0, # ignore dangling symlinks, silently
> wanted => sub {
> # skip project-list toplevel, if we get it.
>
I guess that is a good solution, but I'm not Perl expert...
--
Jakub Narebski
Poland
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-07-27 22:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-27 8:23 gitweb chokes on recursive symlink Junio C Hamano
2007-07-27 22:57 ` Jakub Narebski
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).