From: Jakub Narebski <jnareb@gmail.com>
To: "John 'Warthog9' Hawley" <warthog9@eaglescrag.net>, git@vger.kernel.org
Cc: warthog9@kernel.org
Subject: Re: [PATCH 2/7] gitweb: Add option to force version match
Date: Wed, 13 Jan 2010 18:33:55 +0100 [thread overview]
Message-ID: <201001131833.55603.jnareb@gmail.com> (raw)
In-Reply-To: <1263374828-15342-3-git-send-email-warthog9@eaglescrag.net>
On Wed, 13 Jan 2010, John 'Warthog9' Hawley wrote:
> From: John 'Warthog9' Hawley <warthog9@kernel.org>
>
> This adds $git_versions_must_match variable, which is set to true
s/is set to true value/if set to true,/
> value checks that we are running on the same version of git that we
> shipped with, and if not throw '500 Internal Server Error' error.
> What is checked is the version of gitweb (embedded in building
> gitweb.cgi), against version of runtime git binary used.
>
> Gitweb can usually run with a mismatched git install. This is more
> here to give an obvious warning as to whats going on vs. silently
> failing.
>
> By default this feature is turned off.
[moved version info below, after "---" separator]
> Signed-off-by: John 'Warthog9' Hawley <warthog9@kernel.org>
> Signed-off-by: Jakub Narebski <jnareb@gmail.com>
> ---
Moved to the correct place: information about patch versioning should
be put in comment section[1], not in commit message.
[1] Which means between "---" separator and diffstat.
> v3 - warthog9: adjust to use die_error instead of recreating it
> v2 - Jakub: Changes to make non-default, and change naming
> v1 - warthog9: Initial
> gitweb/README | 3 +++
> gitweb/gitweb.perl | 28 ++++++++++++++++++++++++++++
> 2 files changed, 31 insertions(+), 0 deletions(-)
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> @@ -587,6 +590,31 @@ if (defined $maxload && get_loadavg() > $maxload) {
> our $git_version = qx("$GIT" --version) =~ m/git version (.*)$/ ? $1 : "unknown";
> $number_of_git_cmds++;
>
> +# Throw an error if git versions does not match, if $git_versions_must_match is true.
> +if ($git_versions_must_match &&
> + $git_version ne $version) {
> + my $admin_contact =
> + defined $ENV{'SERVER_ADMIN'} ? ", $ENV{'SERVER_ADMIN'}," : '';
> + my $err_msg = <<EOT;
> +Internal Server Error
> +<br />
> +</div>
> +<hr />
> +<div class="readme">
> +<h1 align="center">*** Warning ***</h1>
> +<p>
> +This version of gitweb was compiled for <b>@{[esc_html($version)]}</b>,
> +however git version <b>@{[esc_html($git_version)]}</b> was found on server,
> +and administrator requested strict version checking.
> +</p>
> +<p>
> +Please contact the server administrator${admin_contact} to either configure
> +gitweb to allow mismatched versions, or update git or gitweb installation.
> +</p>
> +EOT
> + die_error(500, $err_msg);
> +}
I'm sorry to be this picky, but don't you think that caller should not need
to know "intimate" details on how die_error works. In particular please
notice that you must have known that die_error wraps its output in <div>...
which is not even mentioned in comments.
The second argument of die_error() subroutine is meant to be alternative
description of error condition: short and one line. For situations such
like this one, where we want to describe error in more details, it would
be better, I think, to change signature of die_error() to take (optionally)
three arguments, and use 'die_error(500, undef, $err_msg);', with $err_msg
starting from '<h1>...</h1>'.
@@ -3460,6 +3460,7 @@
sub die_error {
my $status = shift || 500;
my $error = shift || "Internal server error";
+ my $extra = shift;
my %http_responses = (
400 => '400 Bad Request',
@@ -3475,8 +3476,13 @@ sub die_error {
<br /><br />
$status - $error
<br />
-</div>
EOF
+ if (defined $extra) {
+ print "<hr />\n" .
+ "$extra\n";
+ }
+ print "</div>\n";
+
git_footer_html();
exit;
}
Other that this minor issue it looks good.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2010-01-13 17:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1263374828-15342-1-git-send-email-warthog9@eaglescrag.net>
[not found] ` <1263374828-15342-2-git-send-email-warthog9@eaglescrag.net>
2010-01-13 17:18 ` [PATCH 1/7] gitweb: Load checking Jakub Narebski
[not found] ` <1263374828-15342-3-git-send-email-warthog9@eaglescrag.net>
2010-01-13 17:33 ` Jakub Narebski [this message]
2010-01-13 9:34 [PATCH 0/7] Gitweb caching v4 John 'Warthog9' Hawley
2010-01-13 9:34 ` [PATCH 1/7] gitweb: Load checking John 'Warthog9' Hawley
2010-01-13 9:34 ` [PATCH 2/7] gitweb: Add option to force version match John 'Warthog9' Hawley
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=201001131833.55603.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=warthog9@eaglescrag.net \
--cc=warthog9@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).