Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
git
提交
c07ad4b9
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,发现更多精彩内容 >>
提交
c07ad4b9
编写于
8月 07, 2005
作者:
K
Kay Sievers
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v133
上级
42f7eb94
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
103 addition
and
77 deletion
+103
-77
gitweb.cgi
gitweb.cgi
+103
-77
未找到文件。
gitweb.cgi
浏览文件 @
c07ad4b9
...
@@ -14,7 +14,7 @@ use CGI::Carp qw(fatalsToBrowser);
...
@@ -14,7 +14,7 @@ use CGI::Carp qw(fatalsToBrowser);
use Fcntl ':mode';
use Fcntl ':mode';
my $cgi = new CGI;
my $cgi = new CGI;
my $version = "1
25
";
my $version = "1
33
";
my $my_url = $cgi->url();
my $my_url = $cgi->url();
my $my_uri = $cgi->url(-absolute => 1);
my $my_uri = $cgi->url(-absolute => 1);
my $rss_link = "";
my $rss_link = "";
...
@@ -29,6 +29,7 @@ my $gitbin = "/usr/bin";
...
@@ -29,6 +29,7 @@ my $gitbin = "/usr/bin";
my $gittmp = "/tmp/gitweb";
my $gittmp = "/tmp/gitweb";
# target of the home link on top of all pages
# target of the home link on top of all pages
#my $home_link = $my_uri;
my $home_link = "/git";
my $home_link = "/git";
# source of projects list
# source of projects list
...
@@ -163,51 +164,47 @@ sub git_header_html {
...
@@ -163,51 +164,47 @@ sub git_header_html {
<title>
$title
</title>
<title>
$title
</title>
$rss_link
$rss_link
<style
type=
"text/css"
>
<style
type=
"text/css"
>
body
{
font-family
:
sans-serif
;
font-size
:
12px
;
margin
:
0px
;
}
body
{
font-family
:
sans-serif
;
font-size
:
12px
;
margin
:
0px
;
border
:
solid
#d9d8d1
;
border-width
:
1px
;
margin
:
10px
;
}
a
{
color
:
#0000cc
;
}
a
{
color
:
#0000cc
;
}
a
:hover
{
color
:
#880000
;
}
a
:hover
,
a
:visited
,
a
:active
{
color
:
#880000
;
}
a
:visited
{
color
:
#880000
;
}
div
.page_header
{
height
:
25px
;
padding
:
8px
;
font-size
:
18px
;
font-weight
:
bold
;
background-color
:
#d9d8d1
;
}
a
:active
{
color
:
#880000
;
}
div
.page_header
{
margin
:
15px
15px
0px
;
height
:
25px
;
padding
:
8px
;
font-size
:
18px
;
font-weight
:
bold
;
background-color
:
#d9d8d1
;
}
div
.page_header
a
:visited
{
color
:
#0000cc
;
}
div
.page_header
a
:visited
{
color
:
#0000cc
;
}
div
.page_header
a
:hover
{
color
:
#880000
;
}
div
.page_header
a
:hover
{
color
:
#880000
;
}
div
.page_nav
{
margin
:
0px
15px
;
padding
:
8px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1
px
;
}
div
.page_nav
{
padding
:
8
px
;
}
div
.page_nav
a
:visited
{
color
:
#0000cc
;
}
div
.page_nav
a
:visited
{
color
:
#0000cc
;
}
div
.page_path
{
font-weight
:
bold
;
margin
:
0px
15px
;
padding
:
8px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1
px
1px
}
div
.page_path
{
font-weight
:
bold
;
padding
:
8px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
0
px
1px
}
div
.page_footer
{
margin
:
0px
15px
15px
;
height
:
17px
;
padding
:
4px
;
padding-left
:
8px
;
background-color
:
#d9d8d1
;
}
div
.page_footer
{
height
:
17px
;
padding
:
4px
8px
;
background-color
:
#d9d8d1
;
}
div
.page_footer_text
{
float
:
left
;
color
:
#555555
;
font-style
:
italic
;
}
div
.page_footer_text
{
float
:
left
;
color
:
#555555
;
font-style
:
italic
;
}
div
.page_body
{
margin
:
0px
15px
;
padding
:
8px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1
px
;
}
div
.page_body
{
padding
:
8
px
;
}
div
.title
,
a
.title
{
div
.title
,
a
.title
{
display
:
block
;
margin
:
0px
15px
;
padding
:
6px
8px
;
display
:
block
;
padding
:
6px
8px
;
font-weight
:
bold
;
background-color
:
#edece6
;
text-decoration
:
none
;
color
:
#000000
;
font-weight
:
bold
;
background-color
:
#edece6
;
text-decoration
:
none
;
color
:
#000000
;
}
}
a
.title
:hover
{
background-color
:
#d9d8d1
;
}
a
.title
:hover
{
background-color
:
#d9d8d1
;
}
div
.title_text
{
margin
:
0px
15px
;
padding
:
6px
8px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1
px
1px
;
}
div
.title_text
{
padding
:
6px
8px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
0
px
1px
;
}
div
.log_body
{
margin
:
0px
15px
;
padding
:
8px
;
padding-left
:
150px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1
px
;
}
div
.log_body
{
padding
:
8px
8px
8px
150
px
;
}
span
.log_age
{
position
:
relative
;
float
:
left
;
width
:
142px
;
font-style
:
italic
;
}
span
.log_age
{
position
:
relative
;
float
:
left
;
width
:
142px
;
font-style
:
italic
;
}
div
.log_link
{
font-size
:
10px
;
font-family
:
sans-serif
;
font-style
:
normal
;
position
:
relative
;
float
:
left
;
width
:
142px
;
}
div
.log_link
{
div
.list
{
font-size
:
10px
;
font-family
:
sans-serif
;
font-style
:
normal
;
display
:
block
;
margin
:
0px
15px
;
padding
:
4px
6px
2px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1px
;
position
:
relative
;
float
:
left
;
width
:
142px
;
font-weight
:
bold
;
}
}
div
.list
{
display
:
block
;
padding
:
4px
8px
2px
;
font-weight
:
bold
;
}
div
.list_head
{
div
.list_head
{
display
:
block
;
margin
:
0px
15px
;
padding
:
6px
6px
4px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1px
1px
;
display
:
block
;
padding
:
6px
6px
4px
;
border
:
solid
#d9d8d1
;
font-style
:
italic
;
border-width
:
0px
0px
1px
;
font-style
:
italic
;
}
}
div
.list
a
{
text-decoration
:
none
;
color
:
#000000
;
}
div
.list
a
{
text-decoration
:
none
;
color
:
#000000
;
}
div
.list
a
:hover
{
color
:
#880000
;
}
div
.list
a
:hover
{
color
:
#880000
;
}
div
.link
{
div
.link
{
margin
:
0px
15px
;
padding
:
4px
6px
6px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
1
px
1px
;
padding
:
4px
8px
6px
;
border
:
solid
#d9d8d1
;
border-width
:
0px
0
px
1px
;
font-family
:
sans-serif
;
font-size
:
10px
;
font-family
:
sans-serif
;
font-size
:
10px
;
}
}
td
{
padding
:
5px
15px
0px
0px
;
font-size
:
12px
;
}
td
{
padding
:
5px
15px
0px
0px
;
font-size
:
12px
;
}
th
{
padding-right
:
10px
;
font-size
:
12px
;
text-align
:
left
;
}
th
{
padding-right
:
10px
;
font-size
:
12px
;
text-align
:
left
;
}
td
.link
{
font-family
:
sans-serif
;
font-size
:
10px
;
}
td
.link
{
font-family
:
sans-serif
;
font-size
:
10px
;
}
td
.pre
{
font-family
:
monospace
;
font-size
:
12px
;
white-space
:
pre
;
padding
:
2px
15px
0px
0px
;
}
td
.pre
{
font-family
:
monospace
;
font-size
:
12px
;
white-space
:
pre
;
padding
:
2px
15px
0px
0px
;
}
span
.diff_info
{
color
:
#000099
;
background-color
:
#edece6
;
font-style
:
italic
;
}
div
.pre
{
font-family
:
monospace
;
font-size
:
12px
;
white-space
:
pre
;
}
div
.diff_info
{
font-family
:
monospace
;
color
:
#000099
;
background-color
:
#edece6
;
font-style
:
italic
;
}
a
.rss_logo
{
float
:
right
;
padding
:
3px
0px
;
width
:
35px
;
line-height
:
10px
;
a
.rss_logo
{
float
:
right
;
padding
:
3px
0px
;
width
:
35px
;
line-height
:
10px
;
border
:
1px
solid
;
border-color
:
#fcc7a5
#7d3302
#3e1a01
#ff954e
;
border
:
1px
solid
;
border-color
:
#fcc7a5
#7d3302
#3e1a01
#ff954e
;
color
:
#ffffff
;
background-color
:
#ff6600
;
color
:
#ffffff
;
background-color
:
#ff6600
;
...
@@ -397,15 +394,20 @@ sub git_diff_html {
...
@@ -397,15 +394,20 @@ sub git_diff_html {
open my $fd, "-|", "/usr/bin/diff -u -p -L $from_name -L $to_name $from_tmp $to_tmp";
open my $fd, "-|", "/usr/bin/diff -u -p -L $from_name -L $to_name $from_tmp $to_tmp";
while (my $line =
<
$
fd
>
) {
while (my $line =
<
$
fd
>
) {
my $char = substr($line,0,1);
chomp($line);
# skip errors
my $char = substr($line, 0, 1);
next if $char eq '\\';
my $color = "";
# color the diff
if ($char eq '+') {
print '
<span
style=
"color: #008800;"
>
' if $char eq '+';
$color = " style=\"color:#008800;\"";
print '
<span
style=
"color: #CC0000;"
>
' if $char eq '-';
} elsif ($char eq '-') {
print '
<span
style=
"color: #990099;"
>
' if $char eq '@';
$color = " style=\"color:#cc0000;\"";
print escapeHTML($line);
} elsif ($char eq '@') {
print '
</span>
' if $char eq '+' or $char eq '-' or $char eq '@';
$color = " style=\"color:#990099;\"";
} elsif ($char eq '\\') {
# skip errors
next;
}
print "
<div
class=
\"pre\"$color
>
" . escapeHTML($line) . "
</div>
\n";
}
}
close $fd;
close $fd;
...
@@ -494,6 +496,19 @@ sub git_logo {
...
@@ -494,6 +496,19 @@ sub git_logo {
"\x12\x1c\x9a\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82";
"\x12\x1c\x9a\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82";
}
}
sub get_file_owner {
my $path = shift;
my ($dev, $ino, $mode, $nlink, $st_uid, $st_gid, $rdev, $size) = stat($path);
my ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpwuid($st_uid);
if (!defined $gcos) {
return undef;
}
my $owner = $gcos;
$owner =~ s/[,;].*$//;
return $owner;
}
sub git_project_list {
sub git_project_list {
my $project_list = shift;
my $project_list = shift;
my @list;
my @list;
...
@@ -504,17 +519,30 @@ sub git_project_list {
...
@@ -504,17 +519,30 @@ sub git_project_list {
opendir my $dh, $dir || return undef;
opendir my $dh, $dir || return undef;
while (my $dir = readdir($dh)) {
while (my $dir = readdir($dh)) {
if (-e "$projectroot/$dir/HEAD") {
if (-e "$projectroot/$dir/HEAD") {
push @list, $dir;
my $pr = {
path => $dir,
};
push @list, $pr
}
}
}
}
closedir($dh);
closedir($dh);
} elsif (-e $project_list) {
} elsif (-e $project_list) {
# read from file
# read from file
# 'git/git.git:Linus Torvalds'
# 'linux/hotplug/udev.git'
open my $fd , $project_list || return undef;
open my $fd , $project_list || return undef;
while (my $line =
<
$
fd
>
) {
while (my $line =
<
$
fd
>
) {
chomp $line;
chomp $line;
if (-e "$projectroot/$line/HEAD") {
my ($path, $owner) = split ':', $line;
push @list, $line;
if (!defined $path) {
next;
}
if (-e "$projectroot/$path/HEAD") {
my $pr = {
path => $path,
owner => $owner,
};
push @list, $pr
}
}
}
}
close $fd;
close $fd;
...
@@ -523,7 +551,7 @@ sub git_project_list {
...
@@ -523,7 +551,7 @@ sub git_project_list {
if (!@list) {
if (!@list) {
die_error(undef, "No project found.");
die_error(undef, "No project found.");
}
}
@list = sort @list;
@list = sort
{$a->{'path'} cmp $b->{'path'}}
@list;
git_header_html();
git_header_html();
print "
<div
class=
\"page_body\"
><br/>
\n";
print "
<div
class=
\"page_body\"
><br/>
\n";
...
@@ -534,34 +562,32 @@ sub git_project_list {
...
@@ -534,34 +562,32 @@ sub git_project_list {
"
<th>
Owner
</th>
\n" .
"
<th>
Owner
</th>
\n" .
"
<th>
last change
</th>
\n" .
"
<th>
last change
</th>
\n" .
"
</tr>
\n";
"
</tr>
\n";
foreach my $proj (@list) {
foreach my $pr (@list) {
my $head = git_read_head($proj);
my %proj = %$pr;
my $head = git_read_head($proj{'path'});
if (!defined $head) {
if (!defined $head) {
next;
next;
}
}
$ENV{'SHA1_FILE_DIRECTORY'} = "$projectroot/$proj/objects";
$ENV{'SHA1_FILE_DIRECTORY'} = "$projectroot/$proj
{'path'}
/objects";
my %co = git_read_commit($head);
my %co = git_read_commit($head);
if (!%co) {
if (!%co) {
next;
next;
}
}
my $descr = git_read_description($proj) || "";
my $descr = git_read_description($proj{'path'}) || "";
my $owner = "";
# get directory owner if not already specified
my ($dev, $ino, $mode, $nlink, $st_uid, $st_gid, $rdev, $size) = stat("$projectroot/$proj");
if (!defined $proj{'owner'}) {
my ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpwuid($st_uid);
$proj{'owner'} = get_file_owner("$projectroot/$proj{'path'}") || "";
if (defined $gcos) {
$owner = $gcos;
$owner =~ s/[,;].*$//;
}
}
print "
<tr>
\n" .
print "
<tr>
\n" .
"
<td>
" . $cgi->a({-href => "$my_uri?p=
$proj;a=log"}, escapeHTML($proj
)) . "
</td>
\n" .
"
<td>
" . $cgi->a({-href => "$my_uri?p=
" . $proj{'path'} . ";a=log"}, escapeHTML($proj{'path'}
)) . "
</td>
\n" .
"
<td>
$descr
</td>
\n" .
"
<td>
$descr
</td>
\n" .
"
<td><i>
$
owner
</i></td>
\n";
"
<td><i>
$
proj{'owner'}
</i></td>
\n";
if ($co{'age'}
<
60
*60*2
)
{
if ($co{'age'}
<
60
*60*2
)
{
print
"<
td
><span
style =
\"color:
#009900
;\"
><b><i>
" . $co{'age_string'} . "
</i></b></span></td>
\n";
print
"<
td
><span
style =
\"color:
#009900
;\"
><b><i>
$co{'age_string'}
</i></b></span></td>
\n";
} elsif ($co{'age'}
<
60
*60*24*2
)
{
} elsif ($co{'age'}
<
60
*60*24*2
)
{
print
"<
td
><span
style =
\"color:
#009900
;\"
><i>
" . $co{'age_string'} . "
</i></span></td>
\n";
print
"<
td
><span
style =
\"color:
#009900
;\"
><i>
$co{'age_string'}
</i></span></td>
\n";
} else {
} else {
print "
<td><i>
" . $co{'age_string'} . "
</i></td>
\n";
print "
<td><i>
$co{'age_string'}
</i></td>
\n";
}
}
print "
</tr>
\n";
print "
</tr>
\n";
}
}
...
@@ -619,8 +645,9 @@ sub git_blob {
...
@@ -619,8 +645,9 @@ sub git_blob {
}
}
print "
<br/><br/>
\n" .
print "
<br/><br/>
\n" .
"
</div>
\n";
"
</div>
\n";
print "
<div>
\n" .
print "
<div>
" .
$cgi->a({-href => "$my_uri?p=$project;a=commit;h=$hash_base", -class => "title"}, escapeHTML($co{'title'})) . "\n";
$cgi->a({-href => "$my_uri?p=$project;a=commit;h=$hash_base", -class => "title"}, escapeHTML($co{'title'})) .
"
</div>
\n";
} else {
} else {
print "
<div
class=
\"page_nav\"
>
\n" .
print "
<div
class=
\"page_nav\"
>
\n" .
"
<br/><br/></div>
\n" .
"
<br/><br/></div>
\n" .
...
@@ -629,14 +656,16 @@ sub git_blob {
...
@@ -629,14 +656,16 @@ sub git_blob {
if (defined $file_name) {
if (defined $file_name) {
print "
<div
class=
\"page_path\"
>
/$file_name
</div>
\n";
print "
<div
class=
\"page_path\"
>
/$file_name
</div>
\n";
}
}
print "
<div
class=
\"page_body\"
>
<pre>
\n";
print "
<div
class=
\"page_body\"
>
\n";
my $nr;
my $nr;
while (my $line =
<
$
fd
>
) {
while (my $line =
<
$
fd
>
) {
chomp $line;
$nr++;
$nr++;
printf "
<span
style =
\"color:
#999999
;\"
>
%4i\t
</span>
%s", $nr, escapeHTML($line);;
print "
<div
class=
\"pre\"
>
";
printf "
<span
style=
\"color:#999999;\"
>
%4i
</span>
", $nr;
print " " .escapeHTML($line) . "
</div>
\n";
}
}
close $fd || print "Reading blob failed.\n";
close $fd || print "Reading blob failed.\n";
print "
</pre>
\n";
print "
</div>
";
print "
</div>
";
git_footer_html();
git_footer_html();
}
}
...
@@ -694,7 +723,7 @@ sub git_tree {
...
@@ -694,7 +723,7 @@ sub git_tree {
if ($t_type eq "blob") {
if ($t_type eq "blob") {
print "
<td
class=
\"pre\"
>
$t_name
</td>
\n";
print "
<td
class=
\"pre\"
>
$t_name
</td>
\n";
print "
<td
class=
\"link\"
>
" .
print "
<td
class=
\"link\"
>
" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$t_hash" . $base_key . $file_key}, "
file
") .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$t_hash" . $base_key . $file_key}, "
blob
") .
" | " . $cgi->a({-href => "$my_uri?p=$project;a=history;h=$hash_base" . $file_key}, "history") .
" | " . $cgi->a({-href => "$my_uri?p=$project;a=history;h=$hash_base" . $file_key}, "history") .
"
</td>
\n";
"
</td>
\n";
} elsif ($t_type eq "tree") {
} elsif ($t_type eq "tree") {
...
@@ -916,9 +945,9 @@ sub git_commit {
...
@@ -916,9 +945,9 @@ sub git_commit {
print "
<div
class=
\"list\"
>
\n" .
print "
<div
class=
\"list\"
>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"},
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"},
escapeHTML($file) . "
<span
style=
\"color:
#008000
;\"
>
[new " . file_type($mode) . $mode_chng . "]
</span>
") . "\n" .
escapeHTML($file) . "
<span
style=
\"color:
#008000
;\"
>
[new " . file_type($mode) . $mode_chng . "]
</span>
") . "\n" .
"
</div>
";
"
</div>
\n
";
print "
<div
class=
\"link\"
>
\n" .
print "
<div
class=
\"link\"
>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, "blob") . "
<br/>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, "blob") . "\n" .
"
</div>
\n";
"
</div>
\n";
} elsif ($op eq "-") {
} elsif ($op eq "-") {
print "
<div
class=
\"list\"
>
\n" .
print "
<div
class=
\"list\"
>
\n" .
...
@@ -927,7 +956,7 @@ sub git_commit {
...
@@ -927,7 +956,7 @@ sub git_commit {
"
</div>
";
"
</div>
";
print "
<div
class=
\"link\"
>
\n" .
print "
<div
class=
\"link\"
>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, "blob") . " | " .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, "blob") . " | " .
$cgi->a({-href => "$my_uri?p=$project;a=history;h=$hash;f=$file"}, "history") . "
<br/>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=history;h=$hash;f=$file"}, "history") . "\n" .
"
</div>
\n";
"
</div>
\n";
} elsif ($op eq "*") {
} elsif ($op eq "*") {
$id =~ m/([0-9a-fA-F]+)->([0-9a-fA-F]+)/;
$id =~ m/([0-9a-fA-F]+)->([0-9a-fA-F]+)/;
...
@@ -966,7 +995,7 @@ sub git_commit {
...
@@ -966,7 +995,7 @@ sub git_commit {
print $cgi->a({-href => "$my_uri?p=$project;a=blobdiff;h=$to_id;hp=$from_id;hb=$hash;f=$file"}, "diff") . " | ";
print $cgi->a({-href => "$my_uri?p=$project;a=blobdiff;h=$to_id;hp=$from_id;hb=$hash;f=$file"}, "diff") . " | ";
}
}
print $cgi->a({-href => "$my_uri?p=$project;a=blob;h=$to_id;hb=$hash;f=$file"}, "blob") . " | " .
print $cgi->a({-href => "$my_uri?p=$project;a=blob;h=$to_id;hb=$hash;f=$file"}, "blob") . " | " .
$cgi->a({-href => "$my_uri?p=$project;a=history;h=$hash;f=$file"}, "history") . "
<br/>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=history;h=$hash;f=$file"}, "history") . "\n" .
"
</div>
\n";
"
</div>
\n";
}
}
}
}
...
@@ -1001,15 +1030,13 @@ sub git_blobdiff {
...
@@ -1001,15 +1030,13 @@ sub git_blobdiff {
"
</div>
\n";
"
</div>
\n";
}
}
print "
<div
class=
\"page_body\"
>
\n" .
print "
<div
class=
\"page_body\"
>
\n" .
"
<pre>
\n";
"
<div
class=
\"diff_info\"
>
blob:" .
print "
<span
class=
\"diff_info\"
>
blob:" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$hash_parent;hb=$hash_base;f=$file_name"}, $hash_parent) .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$hash_parent;hb=$hash_base;f=$file_name"}, $hash_parent) .
" -> blob:" .
" -> blob:" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$hash;hb=$hash_base;f=$file_name"}, $hash) .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$hash;hb=$hash_base;f=$file_name"}, $hash) .
"
</
span
>
\n";
"
</
div
>
\n";
git_diff_html($hash_parent, $file_name || $hash_parent, $hash, $file_name || $hash);
git_diff_html($hash_parent, $file_name || $hash_parent, $hash, $file_name || $hash);
print "
</pre>
\n" .
print "
</div>
";
"
</div>
";
git_footer_html();
git_footer_html();
}
}
...
@@ -1032,8 +1059,7 @@ sub git_commitdiff {
...
@@ -1032,8 +1059,7 @@ sub git_commitdiff {
print "
<div>
\n" .
print "
<div>
\n" .
$cgi->a({-href => "$my_uri?p=$project;a=commit;h=$hash", -class => "title"}, escapeHTML($co{'title'})) . "\n" .
$cgi->a({-href => "$my_uri?p=$project;a=commit;h=$hash", -class => "title"}, escapeHTML($co{'title'})) . "\n" .
"
</div>
\n";
"
</div>
\n";
print "
<div
class=
\"page_body\"
>
\n" .
print "
<div
class=
\"page_body\"
>
\n";
"
<pre>
\n";
foreach my $line (@difftree) {
foreach my $line (@difftree) {
# '*100644->100644 blob 8e5f9bbdf4de94a1bc4b4da8cb06677ce0a57716->8da3a306d0c0c070d87048d14a033df02f40a154 Makefile'
# '*100644->100644 blob 8e5f9bbdf4de94a1bc4b4da8cb06677ce0a57716->8da3a306d0c0c070d87048d14a033df02f40a154 Makefile'
$line =~ m/^(.)(.*)\t(.*)\t(.*)\t(.*)$/;
$line =~ m/^(.)(.*)\t(.*)\t(.*)\t(.*)$/;
...
@@ -1044,14 +1070,14 @@ sub git_commitdiff {
...
@@ -1044,14 +1070,14 @@ sub git_commitdiff {
my $file = $5;
my $file = $5;
if ($type eq "blob") {
if ($type eq "blob") {
if ($op eq "+") {
if ($op eq "+") {
print "
<
span
class=
\"diff_info\"
>
" . file_type($mode) . ":" .
print "
<
div
class=
\"diff_info\"
>
" . file_type($mode) . ":" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, $id) . "(new)" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, $id) . "(new)" .
"
</
span
>
\n";
"
</
div
>
\n";
git_diff_html(undef, "/dev/null", $id, "b/$file");
git_diff_html(undef, "/dev/null", $id, "b/$file");
} elsif ($op eq "-") {
} elsif ($op eq "-") {
print "
<
span
class=
\"diff_info\"
>
" . file_type($mode) . ":" .
print "
<
div
class=
\"diff_info\"
>
" . file_type($mode) . ":" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, $id) . "(deleted)" .
$cgi->a({-href => "$my_uri?p=$project;a=blob;h=$id;hb=$hash;f=$file"}, $id) . "(deleted)" .
"
</
span
>
\n";
"
</
div
>
\n";
git_diff_html($id, "a/$file", undef, "/dev/null");
git_diff_html($id, "a/$file", undef, "/dev/null");
} elsif ($op eq "*") {
} elsif ($op eq "*") {
$id =~ m/([0-9a-fA-F]+)->([0-9a-fA-F]+)/;
$id =~ m/([0-9a-fA-F]+)->([0-9a-fA-F]+)/;
...
@@ -1061,18 +1087,18 @@ sub git_commitdiff {
...
@@ -1061,18 +1087,18 @@ sub git_commitdiff {
my $from_mode = $1;
my $from_mode = $1;
my $to_mode = $2;
my $to_mode = $2;
if ($from_id ne $to_id) {
if ($from_id ne $to_id) {
print "
<
span
class=
\"diff_info\"
>
" .
print "
<
div
class=
\"diff_info\"
>
" .
file_type($from_mode) . ":" . $cgi->a({-href => "$my_uri?p=$project;a=blob;h=$from_id;hb=$hash;f=$file"}, $from_id) .
file_type($from_mode) . ":" . $cgi->a({-href => "$my_uri?p=$project;a=blob;h=$from_id;hb=$hash;f=$file"}, $from_id) .
" -> " .
" -> " .
file_type($to_mode) . ":" . $cgi->a({-href => "$my_uri?p=$project;a=blob;h=$to_id;hb=$hash;f=$file"}, $to_id);
file_type($to_mode) . ":" . $cgi->a({-href => "$my_uri?p=$project;a=blob;h=$to_id;hb=$hash;f=$file"}, $to_id);
print "
</
span
>
\n";
print "
</
div
>
\n";
git_diff_html($from_id, "a/$file", $to_id, "b/$file");
git_diff_html($from_id, "a/$file", $to_id, "b/$file");
}
}
}
}
}
}
}
}
print "
<
/pre><br/>
\n";
print "
<
br/>
\n" .
print
"
</div>
";
"
</div>
";
git_footer_html();
git_footer_html();
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录