From: Florian Forster <octo@verplant.org>
To: git@vger.kernel.org
Cc: Florian Forster <octo@verplant.org>
Subject: [PATCH] gitweb: Make the availability of the `blame' interface in gitweb configurable.
Date: Mon, 12 Jun 2006 10:31:57 +0200 [thread overview]
Message-ID: <11501011173804-git-send-email-octo@verplant.org> (raw)
In-Reply-To: <20060612082448.GA11857@verplant.org>
Since `git-annotate' is an expensive operation to run it may be desirable to
deactivate this functionality. This patch introduces the `gitweb.blame' option
to git-repo-config and disables the blame support by default.
Signed-off-by: Florian Forster <octo@verplant.org>
---
gitweb/gitweb.cgi | 27 +++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 2 deletions(-)
3eea23e8d8a13579455cdf8d5088794d33bdcba2
diff --git a/gitweb/gitweb.cgi b/gitweb/gitweb.cgi
index 91c075d..5eabe06 100755
--- a/gitweb/gitweb.cgi
+++ b/gitweb/gitweb.cgi
@@ -837,6 +837,25 @@ sub git_read_projects {
return @list;
}
+sub git_get_project_config {
+ my $key = shift;
+
+ return unless ($key);
+ $key =~ s/^gitweb\.//;
+ return if ($key =~ m/\W/);
+
+ my $val = qx(git-repo-config --get gitweb.$key);
+ return ($val);
+}
+
+sub git_get_project_config_bool {
+ my $val = git_get_project_config (@_);
+ if ($val and $val =~ m/true|yes|on/) {
+ return (1);
+ }
+ return; # implicit false
+}
+
sub git_project_list {
my @list = git_read_projects();
my @projects;
@@ -1233,6 +1252,7 @@ sub git_tag {
sub git_blame {
my $fd;
+ die_error('403 Permission denied', "Permission denied.") if (!git_get_project_config_bool ('blame'));
die_error('404 Not Found', "What file will it be, master?") if (!$file_name);
$hash_base ||= git_read_head($project);
die_error(undef, "Reading commit failed.") unless ($hash_base);
@@ -1468,6 +1488,7 @@ sub git_blob {
my $base = $hash_base || git_read_head($project);
$hash = git_get_hash_by_path($base, $file_name, "blob") || die_error(undef, "Error lookup file.");
}
+ my $have_blame = git_get_project_config_bool ('blame');
open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or die_error(undef, "Open failed.");
git_header_html();
if (defined $hash_base && (my %co = git_read_commit($hash_base))) {
@@ -1479,8 +1500,10 @@ sub git_blob {
" | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commitdiff;h=$hash_base")}, "commitdiff") .
" | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=tree;h=$co{'tree'};hb=$hash_base")}, "tree") . "<br/>\n";
if (defined $file_name) {
- print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blame;h=$hash;hb=$hash_base;f=$file_name")}, "blame") .
- " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash;f=$file_name")}, "plain") .
+ if ($have_blame) {
+ print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blame;h=$hash;hb=$hash_base;f=$file_name")}, "blame") . " | ";
+ }
+ print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash;f=$file_name")}, "plain") .
" | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob;hb=HEAD;f=$file_name")}, "head") . "<br/>\n";
} else {
print $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;h=$hash")}, "plain") . "<br/>\n";
--
1.3.3
next prev parent reply other threads:[~2006-06-12 8:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-11 15:45 [PATCH] gitweb: Adding a `blame' interface Florian Forster
2006-06-11 22:02 ` Martin Langhoff
2006-06-12 8:24 ` Florian Forster
2006-06-12 8:31 ` Florian Forster [this message]
2006-06-12 8:34 ` Martin Langhoff
2006-06-12 8:40 ` Shawn Pearce
2006-06-12 9:08 ` Johannes Schindelin
2006-06-12 9:19 ` Shawn Pearce
2006-06-12 18:11 ` gitweb: Config file support (was: Adding a `blame' interface.) Florian Forster
2006-06-12 14:59 ` [PATCH] gitweb: Adding a `blame' interface Linus Torvalds
2006-06-12 17:57 ` [PATCH] gitweb: Supporting caches (was: Adding a `blame' interface.) Florian Forster
2006-06-12 21:29 ` [PATCH] gitweb: Adding a `blame' interface Jon Loeliger
2006-06-14 20:27 ` Junio C Hamano
2006-06-12 21:38 ` Fredrik Kuivinen
2006-06-12 22:42 ` Johannes Schindelin
2006-06-12 22:49 ` Linus Torvalds
2006-06-12 22:55 ` Johannes Schindelin
2006-06-12 23:21 ` Linus Torvalds
2006-06-15 19:46 ` Marco Costalba
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=11501011173804-git-send-email-octo@verplant.org \
--to=octo@verplant.org \
--cc=git@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.