From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Subject: [PATCH 4/9] gitweb: Separate main part of git_history into git_history_body
Date: Mon, 14 Aug 2006 02:09:08 +0200 [thread overview]
Message-ID: <200608140209.09189.jnareb@gmail.com> (raw)
In-Reply-To: <200608140202.46160.jnareb@gmail.com>
Separates main part of git_history into git_history_body subroutine,
and makes output more similar to git_shortlog. Adds "diff to current"
link only for history of regular file (blob).
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
gitweb/gitweb.perl | 96 +++++++++++++++++++++++++++++++++-------------------
1 files changed, 60 insertions(+), 36 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index c4d6eab..5af6e77 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1117,6 +1117,64 @@ sub git_shortlog_body {
print "</table>\n";
}
+sub git_history_body {
+ # Warning: assumes constant type (blob or tree) during history
+ my ($fd, $refs, $hash_base, $ftype, $extra) = @_;
+
+ print "<table class=\"history\" cellspacing=\"0\">\n";
+ my $alternate = 0;
+ while (my $line = <$fd>) {
+ if ($line !~ m/^([0-9a-fA-F]{40})/) {
+ next;
+ }
+
+ my $commit = $1;
+ my %co = parse_commit($commit);
+ if (!%co) {
+ next;
+ }
+
+ my $ref = format_ref_marker($refs, $commit);
+
+ if ($alternate) {
+ print "<tr class=\"dark\">\n";
+ } else {
+ print "<tr class=\"light\">\n";
+ }
+ $alternate ^= 1;
+ print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
+ # shortlog uses chop_str($co{'author_name'}, 10)
+ "<td><i>" . esc_html(chop_str($co{'author_name'}, 15, 3)) . "</i></td>\n" .
+ "<td>";
+ # originally git_history used chop_str($co{'title'}, 50)
+ print format_subject_html($co{'title'}, $co{'title_short'}, "p=$project;a=commit;h=$commit", $ref);
+ print "</td>\n" .
+ "<td class=\"link\">" .
+ $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$commit")}, "commit") . " | " .
+ $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commitdiff;h=$commit")}, "commitdiff") . " | " .
+ $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=$ftype;hb=$commit;f=$file_name")}, $ftype);
+
+ if ($ftype eq 'blob') {
+ my $blob_current = git_get_hash_by_path($hash_base, $file_name);
+ my $blob_parent = git_get_hash_by_path($commit, $file_name);
+ if (defined $blob_current && defined $blob_parent &&
+ $blob_current ne $blob_parent) {
+ print " | " .
+ $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blobdiff;h=$blob_current;hp=$blob_parent;hb=$commit;f=$file_name")},
+ "diff to current");
+ }
+ }
+ print "</td>\n" .
+ "</tr>\n";
+ }
+ if (defined $extra) {
+ print "<tr>\n" .
+ "<td colspan=\"4\">$extra</td>\n" .
+ "</tr>\n";
+ }
+ print "</table>\n";
+}
+
sub git_tags_body {
# uses global variable $project
my ($taglist, $from, $to, $extra) = @_;
@@ -2297,42 +2355,8 @@ sub git_history {
open my $fd, "-|",
$GIT, "rev-list", "--full-history", $hash_base, "--", $file_name;
- print "<table cellspacing=\"0\">\n";
- my $alternate = 0;
- while (my $line = <$fd>) {
- if ($line =~ m/^([0-9a-fA-F]{40})/){
- my $commit = $1;
- my %co = parse_commit($commit);
- if (!%co) {
- next;
- }
- my $ref = format_ref_marker($refs, $commit);
- if ($alternate) {
- print "<tr class=\"dark\">\n";
- } else {
- print "<tr class=\"light\">\n";
- }
- $alternate ^= 1;
- print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
- "<td><i>" . esc_html(chop_str($co{'author_name'}, 15, 3)) . "</i></td>\n" .
- "<td>" . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$commit"), -class => "list"}, "<b>" .
- esc_html(chop_str($co{'title'}, 50)) . "$ref</b>") . "</td>\n" .
- "<td class=\"link\">" .
- $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$commit")}, "commit") .
- " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commitdiff;h=$commit")}, "commitdiff") .
- " | " . $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=$ftype;hb=$commit;f=$file_name")}, $ftype);
- my $blob = git_get_hash_by_path($hash_base, $file_name);
- my $blob_parent = git_get_hash_by_path($commit, $file_name);
- if (defined $blob && defined $blob_parent && $blob ne $blob_parent) {
- print " | " .
- $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blobdiff;h=$blob;hp=$blob_parent;hb=$commit;f=$file_name")},
- "diff to current");
- }
- print "</td>\n" .
- "</tr>\n";
- }
- }
- print "</table>\n";
+ git_history_body($fd, $refs, $hash_base, $ftype);
+
close $fd;
git_footer_html();
}
--
1.4.1.1
next prev parent reply other threads:[~2006-08-14 10:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-14 0:02 [PATCH 0/9] gitweb: Great subroutine renaming + task separation into subroutines + improvements Jakub Narebski
2006-08-14 0:05 ` [PATCH 1/9] gitweb: Great subroutines renaming Jakub Narebski
2006-08-14 23:28 ` Junio C Hamano
2006-08-14 0:07 ` [PATCH 2/9] gitweb: Separate ref parsing in git_get_refs_list into parse_ref Jakub Narebski
2006-08-15 0:29 ` Junio C Hamano
2006-08-15 16:18 ` Jakub Narebski
2006-08-14 0:08 ` [PATCH 3/9] gitweb: Refactor printing shortened title in git_shortlog_body and git_tags_body Jakub Narebski
2006-08-15 0:29 ` Junio C Hamano
2006-08-14 0:09 ` Jakub Narebski [this message]
2006-08-14 0:10 ` [PATCH 5/9] gitweb: Separate finding project owner into git_get_project_owner Jakub Narebski
2006-08-14 0:14 ` [PATCH 6/9] gitweb: Change appereance of marker of refs pointing to given object Jakub Narebski
2006-08-14 9:30 ` Jakub Narebski
2006-08-15 0:27 ` Junio C Hamano
2006-08-15 16:34 ` Jakub Narebski
2006-08-14 0:15 ` [PATCH 7/9] gitweb: Skip comments in mime.types like file Jakub Narebski
2006-08-14 0:16 ` [PATCH 8/9] gitweb: True fix: Support for the standard mime.types map in gitweb Jakub Narebski
2006-08-15 0:33 ` Junio C Hamano
2006-08-15 16:43 ` Jakub Narebski
2006-08-14 0:18 ` [PATCH 9/9] gitweb: Separate printing difftree in git_commit into git_difftree_body Jakub Narebski
2006-08-15 0:40 ` Junio C Hamano
2006-08-15 16:45 ` Jakub Narebski
2006-08-14 10:40 ` [PATCH 0/9] gitweb: Great subroutine renaming + task separation into subroutines + improvements Jakub Narebski
2006-08-15 0:42 ` Junio C Hamano
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=200608140209.09189.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.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 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.