Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
git
提交
034df39e
G
git
项目概览
李少辉-开发者
/
git
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
git
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
034df39e
编写于
8月 07, 2005
作者:
K
Kay Sievers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v088
上级
6191f8e1
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
100 addition
and
88 deletion
+100
-88
gitweb.cgi
gitweb.cgi
+100
-88
未找到文件。
gitweb.cgi
浏览文件 @
034df39e
...
...
@@ -14,12 +14,21 @@ use CGI::Carp qw(fatalsToBrowser);
my $cgi = new CGI;
my $version = "085";
# !! This devel-version uses a modified git-rev-list binary !!
# The git changes are expected to show up upstream soon.
# begin config
my $projectroot = "/pub/scm";
$projectroot = "/home/kay/public_html/pub/scm";
my $home_link = "/git";
$home_link = "/~kay/git";
my $gitbin = "/usr/bin";
my $gittmp = "/tmp/gitweb";
my $logo_link = "/pub/software/scm/cogito";
$logo_link = "/~kay/pub/software/scm/cogito";
# end config
my $version = "088-devel";
my $my_url = $cgi->url();
my $my_uri = $cgi->url(-absolute => 1);
my $rss_link = "";
...
...
@@ -35,6 +44,7 @@ if (defined($project)) {
die_error("", "No such project.");
}
$rss_link = "
<link
rel=
\"alternate\"
title=
\"$project
log
\"
href=
\"$my_uri?p=$project;a=rss\"
type=
\"application/rss+xml\"/
>
";
$ENV{'SHA1_FILE_DIRECTORY'} = "$projectroot/$project/objects";
}
my $file_name = $cgi->param('f');
...
...
@@ -67,7 +77,6 @@ if (defined($time_back) && !($time_back =~ m/^[0-9]+$/)) {
die_error("", "Invalid time parameter.");
}
$ENV{'SHA1_FILE_DIRECTORY'} = "$projectroot/$project/objects";
mkdir($gittmp, 0700);
sub git_header_html {
...
...
@@ -77,8 +86,8 @@ sub git_header_html {
print
<
<
EOF
;
<?
xml
version=
"1.0"
encoding=
"utf-8"
?
>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xml:lang=
"en-US"
lang=
"en-US"
>
<!-- git web interface v$version, (C) 2005, Kay Sievers <kay.sievers\@vrfy.org>, Christian Gierke <ch\@gierke.de> -->
<html>
<head>
<title>
git - $project
</title>
$rss_link
...
...
@@ -157,7 +166,7 @@ sub git_footer_html {
print "
<div
class=
\"page_footer_text\"
>
" . escapeHTML($descr) . "
</div>
\n";
close $fd;
}
print $cgi->a({-href => "$my_uri?p=$project;a=rss", -class => "xml_logo"}, "
XML
") . "\n";
print $cgi->a({-href => "$my_uri?p=$project;a=rss", -class => "xml_logo"}, "
RSS
") . "\n";
}
print "
</div>
\n" .
"
</body>
\n" .
...
...
@@ -191,7 +200,7 @@ sub git_commit {
my %co;
my @parents;
open my $fd, "-|", "$gitbin/cat-file commit $commit";
open my $fd, "-|", "$gitbin/
git-
cat-file commit $commit";
while (my $line =
<
$
fd
>
) {
chomp($line);
last if $line eq "";
...
...
@@ -263,7 +272,7 @@ sub git_diff_html {
if ($from ne "") {
$from_tmp = "$gittmp/gitweb_" . $$ . "_from";
open(my $fd2, "> $from_tmp");
open my $fd, "-|", "$gitbin/cat-file blob $from";
open my $fd, "-|", "$gitbin/
git-
cat-file blob $from";
my @file =
<
$
fd
>
;
print $fd2 @file;
close $fd2;
...
...
@@ -275,7 +284,7 @@ sub git_diff_html {
if ($to ne "") {
$to_tmp = "$gittmp/gitweb_" . $$ . "_to";
open my $fd2, "> $to_tmp";
open my $fd, "-|", "$gitbin/cat-file blob $to";
open my $fd, "-|", "$gitbin/
git-
cat-file blob $to";
my @file =
<
$
fd
>
;
print $fd2 @file;
close $fd2;
...
...
@@ -347,8 +356,8 @@ sub date_str {
$date{'rfc2822'} = sprintf "%s, %d %s %4d %02d:%02d:%02d +0000", $days[$wday], $mday, $months[$mon], 1900+$year, $hour ,$min, $sec;
$date{'mday-time'} = sprintf "%d %s %02d:%02d", $mday, $months[$mon], $hour ,$min;
$tz =~ m/
((-|\+)[0-9][0-9])([0-9][0-9])
/;
my $local = $epoch + (($1 + ($2/60)) * 3600);
$tz =~ m/
^([+\-][0-9][0-9])([0-9][0-9])$
/;
my $local = $epoch + ((
int
$1 + ($2/60)) * 3600);
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = gmtime($local);
$date{'hour_local'} = $hour;
$date{'minute_local'} = $min;
...
...
@@ -356,7 +365,7 @@ sub date_str {
return %date;
}
if ($action eq "git-logo.png") {
if (
defined($action)
&&
$action eq "git-logo.png") {
print $cgi->header(-type => 'image/png', -expires => '+1d');
print "\211\120\116\107\015\012\032\012\000\000\000\015\111\110\104\122".
"\000\000\000\110\000\000\000\033\004\003\000\000\000\055\331\324".
...
...
@@ -393,7 +402,7 @@ if ($action eq "blob") {
print "
<br/><br/></div>
\n";
print "
<div
class=
\"title\"
>
$hash
</div>
\n";
print "
<div
class=
\"page_body\"
><pre>
\n";
open(my $fd, "-|", "$gitbin/cat-file blob $hash");
open(my $fd, "-|", "$gitbin/
git-
cat-file blob $hash");
my $nr;
while (my $line =
<
$
fd
>
) {
$nr++;
...
...
@@ -407,13 +416,13 @@ if ($action eq "blob") {
if ($hash eq "") {
$hash = git_head($project);
}
open my $fd, "-|", "$gitbin/ls-tree $hash";
open my $fd, "-|", "$gitbin/
git-
ls-tree $hash";
my (@entries) = map { chomp; $_ }
<
$
fd
>
;
close $fd;
git_header_html();
my %co = git_commit($hash);
if (
defined(%co)
) {
if (
%co
) {
print "
<div
class=
\"page_nav\"
>
view\n" .
$cgi->a({-href => "$my_uri?p=$project;a=commit;h=$hash"}, "commit") . " | " .
$cgi->a({-href => "$my_uri?p=$project;a=commitdiff;h=$hash"}, "diffs") . " | " .
...
...
@@ -446,12 +455,45 @@ if ($action eq "blob") {
print "
</pre>
\n";
print "
<br/></div>
";
git_footer_html();
} elsif ($action eq "log" || $action eq "rss") {
open my $fd, "-|", "$gitbin/rev-list " . git_head($project);
} elsif ($action eq "rss") {
open my $fd, "-|", "$gitbin/git-rev-list --max-count=20 " . git_head($project);
my (@revlist) = map { chomp; $_ }
<
$
fd
>
;
close $fd;
print $cgi->header(-type => 'text/xml', -charset => 'utf-8');
print "
<?xml version=\"1.0\" encoding=\"utf-8\"?>
\n".
"
<rss
version=
\"0.91\"
>
\n";
print "
<channel>
\n";
print "
<title>
$project
</title>
\n".
"
<link>
" . $my_url . "/$project/log
</link>
\n".
"
<description>
$project log
</description>
\n".
"
<language>
en
</language>
\n";
foreach my $commit (@revlist) {
my %co = git_commit($commit);
my %ad = date_str($co{'author_epoch'});
print "
<item>
\n" .
"\t
<title>
" . sprintf("%d %s %02d:%02d", $ad{'mday'}, $ad{'month'}, $ad{'hour'}, $ad{'min'}) . " - " . escapeHTML($co{'title'}) . "
</title>
\n" .
"\t
<link>
" . $my_url . "?p=$project;a=commit;h=$commit
</link>
\n" .
"\t
<description>
";
my $comment = $co{'comment'};
foreach my $line (@$comment) {
print escapeHTML($line) . "
<br/>
\n";
}
print "\t
</description>
\n" .
"
</item>
\n";
}
print "
</channel></rss>
";
} elsif ($action eq "log") {
my $date = 0;
if ($time_back > 0) {
$date = time - $time_back*24*60*60;
}
my $head = git_head($project);
open my $fd, "-|", "$gitbin/git-rev-list --max-age=$date $head";
my (@revlist) = map { chomp; $_ }
<
$
fd
>
;
close $fd;
if ($action eq "log") {
git_header_html();
print "
<div
class=
\"page_nav\"
>
\n";
print "view ";
...
...
@@ -462,28 +504,15 @@ if ($action eq "blob") {
$cgi->a({-href => "$my_uri?p=$project;a=log;t=0"}, "all") . "
<br/>
\n";
print "
<br/><br/>
\n" .
"
</div>
\n";
} elsif ($action eq "rss") {
print $cgi->header(-type => 'text/xml', -charset => 'utf-8');
print "
<?xml version=\"1.0\" encoding=\"utf-8\"?>
\n".
"
<rss
version=
\"0.91\"
>
\n";
print "
<channel>
\n";
print "
<title>
$project
</title>
\n".
"
<link>
" . $my_url . "/$project/log
</link>
\n".
"
<description>
$project log
</description>
\n".
"
<language>
en
</language>
\n";
if (!(@revlist)) {
my %co = git_commit($head);
print "
<div
class=
\"page_body\"
>
Last change " . $co{'age_string'} . ".
<br/><br/></div>
\n";
}
for (my $i = 0; $i
<
=
$
#revlist
;
$
i
++)
{
my
$
commit =
$revlist[$i];
foreach my $commit (@revlist) {
my %co = git_commit($commit);
my %ad = date_str($co{'author_epoch'});
if
($
action
eq
"
log
")
{
if
($
time_back
>
0
&&
$co{'age'} > $time_back*60*60*24) {
if ($i == 0) {
print "
<div
class=
\"page_body\"
>
Last change " . $co{'age_string'} . ".
<br/><br/></div>
\n";
}
last;
}
print "
<div>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=commit;h=$commit", -class => "title"},
"
<span
class=
\"log_age\"
>
" . $co{'age_string'} . "
</span>
" . escapeHTML($co{'title'})) . "\n" .
...
...
@@ -503,28 +532,11 @@ if ($action eq "blob") {
}
print "
<br/>
\n" .
"
</div>
\n";
} elsif ($action eq "rss") {
last if ($i >= 20);
print "
<item>
\n" .
"\t
<title>
" . sprintf("%d %s %02d:%02d", $ad{'mday'}, $ad{'month'}, $ad{'hour'}, $ad{'min'}) . " - " . escapeHTML($co{'title'}) . "
</title>
\n" .
"\t
<link>
" . $my_url . "?p=$project;a=commit;h=$commit
</link>
\n" .
"\t
<description>
";
my $comment = $co{'comment'};
foreach my $line (@$comment) {
print escapeHTML($line) . "\n";
}
print "\t
</description>
\n" .
"
</item>
\n";
}
}
if ($action eq "log") {
git_footer_html();
} elsif ($action eq "rss") {
print "
</channel></rss>
";
}
} elsif ($action eq "commit") {
my %co = git_commit($hash);
if (!
defined(%co)
) {
if (!
%co
) {
die_error("", "Unknown commit object.");
}
my %ad = date_str($co{'author_epoch'}, $co{'author_tz'});
...
...
@@ -532,12 +544,12 @@ if ($action eq "blob") {
my @difftree;
if (defined($co{'parent'})) {
open my $fd, "-|", "$gitbin/diff-tree -r " . $co{'parent'} . " $hash";
open my $fd, "-|", "$gitbin/
git-
diff-tree -r " . $co{'parent'} . " $hash";
@difftree = map { chomp; $_ }
<
$
fd
>
;
close $fd;
} else {
# fake git-diff-tree output for initial revision
open my $fd, "-|", "$gitbin/ls-tree -r $hash";
open my $fd, "-|", "$gitbin/
git-
ls-tree -r $hash";
@difftree = map { chomp; "+" . $_ }
<
$
fd
>
;
close $fd;
}
...
...
@@ -664,10 +676,10 @@ if ($action eq "blob") {
git_footer_html();
} elsif ($action eq "commitdiff") {
my %co = git_commit($hash);
if (!
defined(%co)
) {
if (!
%co
) {
die_error("", "Unknown commit object.");
}
open my $fd, "-|", "$gitbin/diff-tree -r " . $co{'parent'} . " $hash";
open my $fd, "-|", "$gitbin/
git-
diff-tree -r " . $co{'parent'} . " $hash";
my (@difftree) = map { chomp; $_ }
<
$
fd
>
;
close $fd;
...
...
@@ -710,7 +722,7 @@ if ($action eq "blob") {
if (!(defined($hash))) {
$hash = git_head($project);
}
open my $fd, "-|", "$gitbin/rev-list $hash";
open my $fd, "-|", "$gitbin/
git-
rev-list $hash";
my (@revlist) = map { chomp; $_ }
<
$
fd
>
;
close $fd;
...
...
@@ -725,7 +737,7 @@ if ($action eq "blob") {
my $parents = $co{'parents'};
my $found = 0;
foreach my $parent (@$parents) {
open $fd, "-|", "$gitbin/diff-tree -r $parent $rev $file_name";
open $fd, "-|", "$gitbin/
git-
diff-tree -r $parent $rev $file_name";
my (@difftree) = map { chomp; $_ }
<
$
fd
>
;
close $fd;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录