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 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).