Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
allow working in repositories with textual symref HEAD
author
Junio C Hamano
<junkio@cox.net>
Mon, 9 Jan 2006 12:13:39 +0000
(13:13 +0100)
committer
Kay Sievers
<kay.sievers@suse.de>
Mon, 9 Jan 2006 12:13:39 +0000
(13:13 +0100)
gitweb.cgi
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
d3a6fd9
)
diff --git
a/gitweb.cgi
b/gitweb.cgi
index 1814f7f2b3784a61e40cf04fa72cdfd2218de22e..26c73958ffedc23793dd36f1cc92645c5b4ffb5b 100755
(executable)
--- a/
gitweb.cgi
+++ b/
gitweb.cgi
@@
-396,6
+396,23
@@
sub git_get_type {
return $type;
}
return $type;
}
+sub git_read_head {
+ my $project = shift;
+ my $oENV = $ENV{'GIT_DIR'};
+ my $retval = undef;
+ $ENV{'GIT_DIR'} = "$projectroot/$project";
+ if (open my $fd, "-|", "$gitbin/git-rev-parse", "--verify", "HEAD") {
+ my $head = <$fd>;
+ close $fd;
+ chomp $head;
+ if ($head =~ m/^[0-9a-fA-F]{40}$/) {
+ $retval = $head;
+ }
+ }
+ $ENV{'GIT_DIR'} = $oENV;
+ return $retval;
+}
+
sub git_read_hash {
my $path = shift;
sub git_read_hash {
my $path = shift;
@@
-823,7
+840,7
@@
sub git_project_list {
die_error(undef, "No project found.");
}
foreach my $pr (@list) {
die_error(undef, "No project found.");
}
foreach my $pr (@list) {
- my $head = git_read_h
ash("$pr->{'path'}/HEAD"
);
+ my $head = git_read_h
ead($pr->{'path'}
);
if (!defined $head) {
next;
}
if (!defined $head) {
next;
}
@@
-994,7
+1011,7
@@
sub git_read_refs {
sub git_summary {
my $descr = git_read_description($project) || "none";
sub git_summary {
my $descr = git_read_description($project) || "none";
- my $head = git_read_h
ash("$project/HEAD"
);
+ my $head = git_read_h
ead($project
);
my %co = git_read_commit($head);
my %cd = date_str($co{'committer_epoch'}, $co{'committer_tz'});
my %co = git_read_commit($head);
my %cd = date_str($co{'committer_epoch'}, $co{'committer_tz'});
@@
-1034,7
+1051,7
@@
sub git_summary {
"<tr><td>owner</td><td>$owner</td></tr>\n" .
"<tr><td>last change</td><td>$cd{'rfc2822'}</td></tr>\n" .
"</table>\n";
"<tr><td>owner</td><td>$owner</td></tr>\n" .
"<tr><td>last change</td><td>$cd{'rfc2822'}</td></tr>\n" .
"</table>\n";
- open my $fd, "-|", "$gitbin/git-rev-list --max-count=17 " . git_read_h
ash("$project/HEAD"
) or die_error(undef, "Open failed.");
+ open my $fd, "-|", "$gitbin/git-rev-list --max-count=17 " . git_read_h
ead($project
) or die_error(undef, "Open failed.");
my (@revlist) = map { chomp; $_ } <$fd>;
close $fd;
print "<div>\n" .
my (@revlist) = map { chomp; $_ } <$fd>;
close $fd;
print "<div>\n" .
@@
-1172,7
+1189,7
@@
sub git_summary {
}
sub git_tag {
}
sub git_tag {
- my $head = git_read_h
ash("$project/HEAD"
);
+ my $head = git_read_h
ead($project
);
git_header_html();
print "<div class=\"page_nav\">\n" .
$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
git_header_html();
print "<div class=\"page_nav\">\n" .
$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
@@
-1211,7
+1228,7
@@
sub git_tag {
}
sub git_tags {
}
sub git_tags {
- my $head = git_read_h
ash("$project/HEAD"
);
+ my $head = git_read_h
ead($project
);
git_header_html();
print "<div class=\"page_nav\">\n" .
$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
git_header_html();
print "<div class=\"page_nav\">\n" .
$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
@@
-1270,7
+1287,7
@@
sub git_tags {
}
sub git_heads {
}
sub git_heads {
- my $head = git_read_h
ash("$project/HEAD"
);
+ my $head = git_read_h
ead($project
);
git_header_html();
print "<div class=\"page_nav\">\n" .
$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
git_header_html();
print "<div class=\"page_nav\">\n" .
$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=summary")}, "summary") .
@@
-1343,7
+1360,7
@@
sub git_get_hash_by_path {
sub git_blob {
if (!defined $hash && defined $file_name) {
sub git_blob {
if (!defined $hash && defined $file_name) {
- my $base = $hash_base || git_read_h
ash("$project/HEAD"
);
+ my $base = $hash_base || git_read_h
ead($project
);
$hash = git_get_hash_by_path($base, $file_name, "blob") || die_error(undef, "Error lookup file.");
}
open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or die_error(undef, "Open failed.");
$hash = git_get_hash_by_path($base, $file_name, "blob") || die_error(undef, "Error lookup file.");
}
open my $fd, "-|", "$gitbin/git-cat-file blob $hash" or die_error(undef, "Open failed.");
@@
-1407,13
+1424,13
@@
sub git_blob_plain {
sub git_tree {
if (!defined $hash) {
sub git_tree {
if (!defined $hash) {
- $hash = git_read_h
ash("$project/HEAD"
);
+ $hash = git_read_h
ead($project
);
if (defined $file_name) {
if (defined $file_name) {
- my $base = $hash_base ||
git_read_hash("$project/HEAD")
;
+ my $base = $hash_base ||
$hash
;
$hash = git_get_hash_by_path($base, $file_name, "tree");
}
if (!defined $hash_base) {
$hash = git_get_hash_by_path($base, $file_name, "tree");
}
if (!defined $hash_base) {
- $hash_base =
git_read_hash("$project/HEAD")
;
+ $hash_base =
$hash
;
}
}
$/ = "\0";
}
}
$/ = "\0";
@@
-1497,7
+1514,7
@@
sub git_tree {
sub git_rss {
# http://www.notestips.com/80256B3A007F2692/1/NAMO5P9UPQ
sub git_rss {
# http://www.notestips.com/80256B3A007F2692/1/NAMO5P9UPQ
- open my $fd, "-|", "$gitbin/git-rev-list --max-count=150 " . git_read_h
ash("$project/HEAD"
) or die_error(undef, "Open failed.");
+ open my $fd, "-|", "$gitbin/git-rev-list --max-count=150 " . git_read_h
ead($project
) or die_error(undef, "Open failed.");
my (@revlist) = map { chomp; $_ } <$fd>;
close $fd or die_error(undef, "Reading rev-list failed.");
print $cgi->header(-type => 'text/xml', -charset => 'utf-8');
my (@revlist) = map { chomp; $_ } <$fd>;
close $fd or die_error(undef, "Reading rev-list failed.");
print $cgi->header(-type => 'text/xml', -charset => 'utf-8');
@@
-1566,7
+1583,7
@@
sub git_opml {
foreach my $pr (@list) {
my %proj = %$pr;
foreach my $pr (@list) {
my %proj = %$pr;
- my $head = git_read_h
ash("$proj{'path'}/HEAD"
);
+ my $head = git_read_h
ead($proj{'path'}
);
if (!defined $head) {
next;
}
if (!defined $head) {
next;
}
@@
-1587,7
+1604,7
@@
sub git_opml {
}
sub git_log {
}
sub git_log {
- my $head = git_read_h
ash("$project/HEAD"
);
+ my $head = git_read_h
ead($project
);
if (!defined $hash) {
$hash = $head;
}
if (!defined $hash) {
$hash = $head;
}
@@
-2083,7
+2100,7
@@
sub git_commitdiff_plain {
sub git_history {
if (!defined $hash) {
sub git_history {
if (!defined $hash) {
- $hash = git_read_h
ash("$project/HEAD"
);
+ $hash = git_read_h
ead($project
);
}
my %co = git_read_commit($hash);
if (!%co) {
}
my %co = git_read_commit($hash);
if (!%co) {
@@
-2159,7
+2176,7
@@
sub git_search {
die_error("", "Text field empty.");
}
if (!defined $hash) {
die_error("", "Text field empty.");
}
if (!defined $hash) {
- $hash = git_read_h
ash("$project/HEAD"
);
+ $hash = git_read_h
ead($project
);
}
my %co = git_read_commit($hash);
if (!%co) {
}
my %co = git_read_commit($hash);
if (!%co) {
@@
-2300,7
+2317,7
@@
sub git_search {
}
sub git_shortlog {
}
sub git_shortlog {
- my $head = git_read_h
ash("$project/HEAD"
);
+ my $head = git_read_h
ead($project
);
if (!defined $hash) {
$hash = $head;
}
if (!defined $hash) {
$hash = $head;
}