From: Mark Rada <marada@uwaterloo.ca>
To: git@vger.kernel.org
Cc: Jakub Narebski <jnareb@gmail.com>, Junio C Hamano <gitster@pobox.com>
Subject: [RFC/PATCH 1/2] gitweb: extend &git_get_head_hash to be &git_get_hash
Date: Thu, 10 Sep 2009 17:20:27 -0400 [thread overview]
Message-ID: <4AA96D9B.6090003@mailservices.uwaterloo.ca> (raw)
This adds an optional second argument to the routine which lets the
caller specify a treeish that can be translated to a hash id by
rev-parse.
To maintain some backwards compatability, the second argument is
optional and it will default to `HEAD' if not specified.
Signed-off-by: Mark Rada <marada@uwaterloo.ca>
---
gitweb/gitweb.perl | 31 ++++++++++++++++---------------
1 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 24b2193..d650188 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1981,13 +1981,14 @@ sub quote_command {
map { my $a = $_; $a =~ s/(['!])/'\\$1'/g; "'$a'" } @_ );
}
-# get HEAD ref of given project as hash
-sub git_get_head_hash {
+# get object id of given project as full hash, defaults to HEAD
+sub git_get_hash {
my $project = shift;
+ my $hash = shift || 'HEAD';
my $o_git_dir = $git_dir;
my $retval = undef;
$git_dir = "$projectroot/$project";
- if (open my $fd, "-|", git_cmd(), "rev-parse", "--verify", "HEAD") {
+ if (open my $fd, '-|', git_cmd(), 'rev-parse', '--verify', "$hash") {
my $head = <$fd>;
close $fd;
if (defined $head && $head =~ /^([0-9a-fA-F]{40})$/) {
@@ -4737,7 +4738,7 @@ sub git_summary {
}
sub git_tag {
- my $head = git_get_head_hash($project);
+ my $head = &git_get_hash($project);
git_header_html();
git_print_page_nav('','', $head,undef,$head);
my %tag = parse_tag($hash);
@@ -4778,7 +4779,7 @@ sub git_blame {
# error checking
die_error(400, "No file name given") unless $file_name;
- $hash_base ||= git_get_head_hash($project);
+ $hash_base ||= &git_get_hash($project);
die_error(404, "Couldn't find base commit") unless $hash_base;
my %co = parse_commit($hash_base)
or die_error(404, "Commit not found");
@@ -4911,7 +4912,7 @@ HTML
}
sub git_tags {
- my $head = git_get_head_hash($project);
+ my $head = &git_get_hash($project);
git_header_html();
git_print_page_nav('','', $head,undef,$head);
git_print_header_div('summary', $project);
@@ -4924,7 +4925,7 @@ sub git_tags {
}
sub git_heads {
- my $head = git_get_head_hash($project);
+ my $head = &git_get_hash($project);
git_header_html();
git_print_page_nav('','', $head,undef,$head);
git_print_header_div('summary', $project);
@@ -4942,7 +4943,7 @@ sub git_blob_plain {
if (!defined $hash) {
if (defined $file_name) {
- my $base = $hash_base || git_get_head_hash($project);
+ my $base = $hash_base || &git_get_hash($project);
$hash = git_get_hash_by_path($base, $file_name, "blob")
or die_error(404, "Cannot find file");
} else {
@@ -4994,7 +4995,7 @@ sub git_blob {
if (!defined $hash) {
if (defined $file_name) {
- my $base = $hash_base || git_get_head_hash($project);
+ my $base = $hash_base || &git_get_hash($project);
$hash = git_get_hash_by_path($base, $file_name, "blob")
or die_error(404, "Cannot find file");
} else {
@@ -5197,7 +5198,7 @@ sub git_snapshot {
}
if (!defined $hash) {
- $hash = git_get_head_hash($project);
+ $hash = &git_get_hash($project);
}
my $name = $project;
@@ -5229,7 +5230,7 @@ sub git_snapshot {
}
sub git_log {
- my $head = git_get_head_hash($project);
+ my $head = &git_get_hash($project);
if (!defined $hash) {
$hash = $head;
}
@@ -5833,7 +5834,7 @@ sub git_patches {
sub git_history {
if (!defined $hash_base) {
- $hash_base = git_get_head_hash($project);
+ $hash_base = &git_get_hash($project);
}
if (!defined $page) {
$page = 0;
@@ -5904,7 +5905,7 @@ sub git_search {
die_error(400, "Text field is empty");
}
if (!defined $hash) {
- $hash = git_get_head_hash($project);
+ $hash = &git_get_hash($project);
}
my %co = parse_commit($hash);
if (!%co) {
@@ -6159,7 +6160,7 @@ EOT
}
sub git_shortlog {
- my $head = git_get_head_hash($project);
+ my $head = &git_get_hash($project);
if (!defined $hash) {
$hash = $head;
}
@@ -6486,7 +6487,7 @@ XML
foreach my $pr (@list) {
my %proj = %$pr;
- my $head = git_get_head_hash($proj{'path'});
+ my $head = &git_get_hash($proj{'path'});
if (!defined $head) {
next;
}
--
1.6.4.2
next reply other threads:[~2009-09-10 21:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-10 21:20 Mark Rada [this message]
2009-09-10 21:49 ` [RFC/PATCH 1/2] gitweb: extend &git_get_head_hash to be &git_get_hash 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=4AA96D9B.6090003@mailservices.uwaterloo.ca \
--to=marada@uwaterloo.ca \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.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.
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.