From: Jakub Narebski <jnareb@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Bernhard R. Link" <brl+git@mail.brlink.eu>, git@vger.kernel.org
Subject: Re: [PATCH v4 1/2] gitweb: add project_filter to limit project list to a subdirectory
Date: Mon, 30 Jan 2012 00:06:29 +0100 [thread overview]
Message-ID: <201201300006.30287.jnareb@gmail.com> (raw)
In-Reply-To: <7v7h0afcc2.fsf@alter.siamese.dyndns.org>
On Sun, 29 Jan 2012, Junio C Hamano wrote:
> "Bernhard R. Link" <brl+git@mail.brlink.eu> writes:
>
> > This commit changes the project listing views (project_list,
> > project_index and opml) to limit the output to only projects in a
> > subdirectory if the new optional parameter ?pf=directory name is used.
> >
> > The change is quite minimal as git_get_projects_list already can limit
> > itself to a subdirectory (though that was previously only used for
> > 'forks').
> >
> > If there is a GITWEB_LIST file, the contents are just filtered like
> > with the forks action.
>
> Meaning, a directory is shown if it is listed on GITWEB_LIST and is a
> subdirectory of the directory specified with project_filter? If so,
> spelling it out instead of saying "just filtered like with the forks
> action" may be clearer without making the description excessively longer.
This means the following:
If $projects_list point to file with a list of projects, gitweb will
show only those project on the list which name matches $project_filter
prefix.
> > Without a GITWEB_LIST file only the given subdirectory is searched
> > for projects (like with forks) unless GITWEB_STRICT_EXPORT is enabled.
> > In the later case GITWEB_PROJECTROOT is traversed normally (unlike
> > with forks) and projects not in the directory ignored.
>
> It is unclear to me what "In the later case" refers to, even assuming that
> it is a typo of "the latter case".
>
> Do you mean "When there is no GITWEB_LIST but GITWEB_STRICT_EXPORT is set,
> project_filter that specifies anything outside GITWEB_PROJECTROOT is
> ignored"?
If $projects_list points to a directory, but $strict_export is true, then
$project_list is scanned recursively for git repositories, as without
this feature, but only those projects that begin with $project_filter
are shown.
Otherwise ($projects_list points to directory and $strict_export not true)
then $project_filter subdirectory of $projects_list is scanned recursively
for git repositories (i.e. starting from "projects_list/$project_filter").
I am not sure if this paranoia mode is really needed for $strict_export,
though.
> A more fundamental issue I have with this patch is how an end user starts
> using this. Once project_filter is set, the breadcrumbs would let the user
> click and navigate around, but in my superficial glance at the patch it is
> not apparent how the initial setting of project_filter can happen without
> the user manually adding pf= to the URL, which is a less than ideal end
> user experience.
The second patch in series adds breadcrumbs allowing to filter projects
in any per-project view.
This feature was originally intended for giving handcrafter URL with
'pf=....' to people...
> > @@ -2839,7 +2848,7 @@ sub git_get_projects_list {
> > my $pfxlen = length("$dir");
> > my $pfxdepth = ($dir =~ tr!/!!);
> > # when filtering, search only given subdirectory
> > - if ($filter) {
> > + if ($filter and not $paranoid) {
> > $dir .= "/$filter";
> > $dir =~ s!/+$!!;
> > }
> > @@ -2864,6 +2873,10 @@ sub git_get_projects_list {
> > }
> >
> > my $path = substr($File::Find::name, $pfxlen + 1);
> > + # paranoidly only filter here
> > + if ($paranoid && $filter && $path !~ m!^\Q$filter\E/!) {
> > + next;
> > + }
>
> When you find "foo" directory and a project_filter tells you to match
> "foo", because $path does not match "^foo/", it will not match (even
> though its subdirectory "foo/bar" would)?
Strictly speaking the match is on dirname of a project path; the basename
of a project does not matter. It is intended, but perhaps should be made
more clear in the commit message.
> > +sub print_nav_breadcrumbs_path {
> > + my $dirprefix = undef;
> > + while (my $part = shift) {
> > + $dirprefix .= "/" if defined $dirprefix;
> > + $dirprefix .= $part;
> > + print $cgi->a({-href => href(project => undef,
> > + project_filter => $dirprefix,
> > + action=>"project_list")},
> > + esc_html($part)) . " / ";
> > + }
> > +}
> > +
> > sub print_nav_breadcrumbs {
> > my %opts = @_;
> >
> > @@ -3841,6 +3866,8 @@ sub print_nav_breadcrumbs {
> > print " / $opts{-action_extra}";
> > }
> > print "\n";
> > + } elsif (defined $project_filter) {
> > + print_nav_breadcrumbs_path(split '/', $project_filter);
> > }
> > }
>
> Hmm.
>
> While this may not be wrong, I wonder if this is limiting a useful feature
> too narrowly. When I visit "/pub/scm /linux/kernel/git/torvals/linux.git"
> at git.kernel.org, for example, there currently are two links, "/pub/scm"
> to the toplevel and "/linux/kernel/git/torvals/linux.git" to itself. I
> often wish to see uplinks to intermediate levels like "/linux/kernel/git"
> and "/linux/kernel/git/torvalds".
>
> Perhaps that is the topic of your second patch. I dunno.
Yes, it is.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2012-01-29 23:06 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-28 16:56 [PATCH v2 1/2] gitweb: add project_filter to limit project list to a subdirectory Bernhard R. Link
2012-01-28 16:57 ` [PATCH v2 2/2] gitweb: place links to parent directories in page header Bernhard R. Link
2012-01-28 22:54 ` Jakub Narebski
2012-01-28 22:45 ` [PATCH v2 1/2] gitweb: add project_filter to limit project list to a subdirectory Jakub Narebski
2012-01-29 1:22 ` [PATCH v3] " Bernhard R. Link
2012-01-29 12:54 ` Jakub Narebski
2012-01-29 16:06 ` [PATCH v4 1/2] " Bernhard R. Link
2012-01-29 16:13 ` [PATCH v4 2/2] gitweb: place links to parent directories in page header Bernhard R. Link
2012-01-29 16:46 ` Jakub Narebski
2012-01-29 16:41 ` [PATCH v4 1/2] gitweb: add project_filter to limit project list to a subdirectory Jakub Narebski
2012-01-29 21:06 ` Junio C Hamano
2012-01-29 23:06 ` Jakub Narebski [this message]
2012-01-30 9:52 ` Bernhard R. Link
2012-01-30 11:44 ` [PATCH v5 1/5] gitweb: prepare git_get_projects_list for use outside 'forks' Bernhard R. Link
2012-01-30 13:42 ` Jakub Narebski
2012-01-30 14:55 ` [PATCH v5.5 " Bernhard R. Link
2012-01-30 15:40 ` Jakub Narebski
2012-01-30 16:29 ` Bernhard R. Link
2012-01-30 11:45 ` [PATCH v5 2/5] gitweb: add project_filter to limit project list to a subdirectory Bernhard R. Link
2012-01-30 15:57 ` Jakub Narebski
2012-01-30 20:03 ` Bernhard R. Link
2012-01-30 20:05 ` [PATCH 1/6] gitweb: move hard coded .git suffix out of git_get_projects_list Bernhard R. Link
2012-01-30 20:06 ` [PATCH v6 2/6] gitweb: prepare git_get_projects_list for use outside 'forks' Bernhard R. Link
2012-01-30 20:07 ` [PATCH v6 3/6] gitweb: add project_filter to limit project list to a subdirectory Bernhard R. Link
2012-01-30 20:09 ` [PATCH v6 4/6] gitweb: limit links to alternate forms of project_list to active project_filter Bernhard R. Link
2012-01-30 20:09 ` [PATCH v6 5/6] gitweb: show active project_filter in project_list page header Bernhard R. Link
2012-01-30 20:10 ` [PATCH v6 6/6] gitweb: place links to parent directories in " Bernhard R. Link
2012-01-30 20:34 ` [PATCH v5 2/5] gitweb: add project_filter to limit project list to a subdirectory Junio C Hamano
2012-01-30 20:48 ` Jakub Narebski
2012-01-30 21:05 ` Junio C Hamano
2012-01-30 21:08 ` Junio C Hamano
2012-01-30 20:48 ` Bernhard R. Link
2012-02-01 16:59 ` Bernhard R. Link
2012-02-01 20:55 ` Junio C Hamano
2012-01-30 11:47 ` [PATCH 3/5] gitweb: limit links to alternate forms of project_list to active project_filter Bernhard R. Link
2012-01-30 16:09 ` Jakub Narebski
2012-01-30 11:48 ` [PATCH v5 4/5] gitweb: show active project_filter in project_list page header Bernhard R. Link
2012-01-30 16:38 ` Jakub Narebski
2012-01-30 11:50 ` [PATCH v5 5/5] gitweb: place links to parent directories in " Bernhard R. Link
2012-01-30 17:10 ` Jakub Narebski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201201300006.30287.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=brl+git@mail.brlink.eu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).