From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Cc: Jakub Narebski <jnareb@gmail.com>, Petr Baudis <pasky@suse.cz>
Subject: [PATCH/RFC] gitweb: Separate features with no project specific override
Date: Sun, 12 Oct 2008 15:05:41 +0200 [thread overview]
Message-ID: <20081012130157.26825.67398.stgit@localhost.localdomain> (raw)
Put features for which project specific override is not supported into
separate %global_feature hash, updating gitweb_check_feature()
subroutine to use it.
While at it remove stale comment for 'pathinfo' feature; requiring to
use workaround specified was fixed in b65910f (gitweb: remove
PATH_INFO from $my_url and $my_uri).
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
This patch has the advantage of clear separation of non-overridable
and overridable features; currently the only difference is lack of
subroutine and comment on feature. For non-overridable features the
complexisty of {'sub'=>..., 'override'=>..., 'default'=>...} is not
needed.
It has the disadvantage of invalidating old gitweb configuration, and
that now there are two sources of gitweb config.
FIX IT: some spurious "HASH.." is printed to STDERR (by my 'run gitweb
from command line' script), which I didn't found yet.
gitweb/gitweb.perl | 59 ++++++++++++++++++++++++----------------------------
1 files changed, 27 insertions(+), 32 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index cc6edbe..82068f9 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -215,13 +215,6 @@ our %feature = (
'override' => 0,
'default' => ['tgz']},
- # Enable text search, which will list the commits which match author,
- # committer or commit text to a given string. Enabled by default.
- # Project specific override is not supported.
- 'search' => {
- 'override' => 0,
- 'default' => [1]},
-
# Enable grep search, which will list the files in currently selected
# tree containing the given string. Enabled by default. This can be
# potentially CPU-intensive, of course.
@@ -248,6 +241,18 @@ our %feature = (
'sub' => \&feature_pickaxe,
'override' => 0,
'default' => [1]},
+);
+
+our %global_feature = (
+ # feature => [ default options...] (array reference)
+ #
+ # For those features project specific override is not supported.
+ #
+ # use gitweb_check_feature(<feature>) to check if <feature> is enabled
+
+ # Enable text search, which will list the commits which match author,
+ # committer or commit text to a given string. Enabled by default.
+ 'search' => [1],
# Make gitweb use an alternative format of the URLs which can be
# more readable and natural-looking: project name is embedded
@@ -257,16 +262,8 @@ our %feature = (
# generates links.
# To enable system wide have in $GITWEB_CONFIG
- # $feature{'pathinfo'}{'default'} = [1];
- # Project specific override is not supported.
-
- # Note that you will need to change the default location of CSS,
- # favicon, logo and possibly other files to an absolute URL. Also,
- # if gitweb.cgi serves as your indexfile, you will need to force
- # $my_uri to contain the script name in your $GITWEB_CONFIG.
- 'pathinfo' => {
- 'override' => 0,
- 'default' => [0]},
+ # $global_feature{'pathinfo'} = [1];
+ 'pathinfo' => [0],
# Make gitweb consider projects in project root subdirectories
# to be forks of existing projects. Given project $projname.git,
@@ -277,11 +274,8 @@ our %feature = (
# to be listed after the main project.
# To enable system wide have in $GITWEB_CONFIG
- # $feature{'forks'}{'default'} = [1];
- # Project specific override is not supported.
- 'forks' => {
- 'override' => 0,
- 'default' => [0]},
+ # $global_feature{'forks'} = [1];
+ 'forks' => [0],
# Insert custom links to the action bar of all project pages.
# This enables you mainly to link to third-party scripts integrating
@@ -296,12 +290,9 @@ our %feature = (
# hash base (hb gitweb parameter); %% expands to %.
# To enable system wide have in $GITWEB_CONFIG e.g.
- # $feature{'actions'}{'default'} = [('graphiclog',
+ # $global_feature{'actions'} = [('graphiclog',
# '/git-browser/by-commit.html?r=%n', 'summary')];
- # Project specific override is not supported.
- 'actions' => {
- 'override' => 0,
- 'default' => []},
+ 'actions' => [],
# Allow gitweb scan project content tags described in ctags/
# of project repository, and display the popular Web 2.0-ish
@@ -315,16 +306,20 @@ our %feature = (
# a pretty tag cloud instead of just a list of tags.
# To enable system wide have in $GITWEB_CONFIG
- # $feature{'ctags'}{'default'} = ['path_to_tag_script'];
+ # $global_feature{'ctags'} = ['path_to_tag_script'];
# Project specific override is not supported.
- 'ctags' => {
- 'override' => 0,
- 'default' => [0]},
+ 'ctags' => [0],
);
sub gitweb_check_feature {
- my ($name) = @_;
+ my $name = shift;
+
+ if (exists $global_feature{$name}) {
+ return @{$global_feature{$name}};
+ }
+
return unless exists $feature{$name};
+
my ($sub, $override, @defaults) = (
$feature{$name}{'sub'},
$feature{$name}{'override'},
--
Stacked GIT 0.14.3
git version 1.6.0.2
next reply other threads:[~2008-10-12 13:07 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-12 13:05 Jakub Narebski [this message]
2008-10-12 21:00 ` [PATCH/RFC v2] gitweb: Separate %global_features 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081012130157.26825.67398.stgit@localhost.localdomain \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=pasky@suse.cz \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox