unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH 0/3] www: viewvcs: tags + minor updates
@ 2022-10-10 21:34 Eric Wong
  2022-10-10 21:34 ` [PATCH 1/3] viewvcs: avoid one ascii_html call Eric Wong
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Eric Wong @ 2022-10-10 21:34 UTC (permalink / raw)
  To: meta

I noticed the /$CODEREPO/ summary endpoint links to tags,
so we'll support handling annotated tags via /($CODEREPO|$INBOX)/$OID/s/,
now.  Still not sure how to best deal with multiple search endpoints,
yet...

Eric Wong (3):
  viewvcs: avoid one ascii_html call
  xt/solver: skip on missing publicinbox.git.coderepo
  www: viewvcs: display annotated tags as discreet objects

 lib/PublicInbox/ViewVCS.pm | 51 +++++++++++++++++++++++++++++++++++---
 xt/solver.t                | 12 +++++++--
 2 files changed, 57 insertions(+), 6 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] viewvcs: avoid one ascii_html call
  2022-10-10 21:34 [PATCH 0/3] www: viewvcs: tags + minor updates Eric Wong
@ 2022-10-10 21:34 ` Eric Wong
  2022-10-10 21:34 ` [PATCH 2/3] xt/solver: skip on missing publicinbox.git.coderepo Eric Wong
  2022-10-10 21:34 ` [PATCH 3/3] www: viewvcs: display annotated tags as discreet objects Eric Wong
  2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2022-10-10 21:34 UTC (permalink / raw)
  To: meta

We can reuse its result for the button text.
---
 lib/PublicInbox/ViewVCS.pm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm
index 72b79ab7..86bae7d6 100644
--- a/lib/PublicInbox/ViewVCS.pm
+++ b/lib/PublicInbox/ViewVCS.pm
@@ -247,9 +247,14 @@ EOM
 			my $rows = ($q =~ tr/\n/\n/) + 1;
 			$q = ascii_html($q);
 			my $ibx_url = ibx_url_for($ctx);
-			my $alt = $ibx_url ? ' '.ascii_html($ibx_url) : '';
-			$ibx_url = ascii_html($ibx_url) if defined $ibx_url;
-			$ibx_url //= $upfx;
+			my $alt;
+			if (defined $ibx_url) {
+				$ibx_url = ascii_html($ibx_url);
+				$alt = ' '.$ibx_url;
+			} else {
+				$ibx_url = $upfx;
+				$alt = '';
+			}
 			print $zfh <<EOM;
 <hr><form action="$ibx_url"
 id=related><pre>find related emails, including ancestors/descendants/conflicts

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] xt/solver: skip on missing publicinbox.git.coderepo
  2022-10-10 21:34 [PATCH 0/3] www: viewvcs: tags + minor updates Eric Wong
  2022-10-10 21:34 ` [PATCH 1/3] viewvcs: avoid one ascii_html call Eric Wong
@ 2022-10-10 21:34 ` Eric Wong
  2022-10-10 21:34 ` [PATCH 3/3] www: viewvcs: display annotated tags as discreet objects Eric Wong
  2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2022-10-10 21:34 UTC (permalink / raw)
  To: meta

Solver tests can never succeed without coderepos configured,
since that's the whole point of solver.  And improve the
original skip message to note that it's about the `git'
public-inbox, not `git' itself.
---
 xt/solver.t | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/xt/solver.t b/xt/solver.t
index c76e0b0a..cd894edd 100644
--- a/xt/solver.t
+++ b/xt/solver.t
@@ -48,9 +48,16 @@ my $client = sub {
 my $nr = 0;
 while (($ibx_name, $urls) = each %$todo) {
 	SKIP: {
-		if (!$cfg->lookup_name($ibx_name)) {
+		my $ibx = $cfg->lookup_name($ibx_name);
+		if (!$ibx) {
 			push @gone, $ibx_name;
-			skip("$ibx_name not configured", scalar(@$urls));
+			skip(qq{[publicinbox "$ibx_name"] not configured},
+				scalar(@$urls));
+		}
+		if (!defined($ibx->{coderepo})) {
+			push @gone, $ibx_name;
+			skip(qq{publicinbox.$ibx_name.coderepo not configured},
+				scalar(@$urls));
 		}
 		test_psgi($app, $client);
 		$nr++;

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] www: viewvcs: display annotated tags as discreet objects
  2022-10-10 21:34 [PATCH 0/3] www: viewvcs: tags + minor updates Eric Wong
  2022-10-10 21:34 ` [PATCH 1/3] viewvcs: avoid one ascii_html call Eric Wong
  2022-10-10 21:34 ` [PATCH 2/3] xt/solver: skip on missing publicinbox.git.coderepo Eric Wong
@ 2022-10-10 21:34 ` Eric Wong
  2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2022-10-10 21:34 UTC (permalink / raw)
  To: meta

This emphasizes annotated tags as their own object type in the
web UI while being able to link to the existing show_commit()
linkification and dfblob: search.
---
 lib/PublicInbox/ViewVCS.pm | 40 +++++++++++++++++++++++++++++++++++++-
 xt/solver.t                |  1 +
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm
index 86bae7d6..02e98768 100644
--- a/lib/PublicInbox/ViewVCS.pm
+++ b/lib/PublicInbox/ViewVCS.pm
@@ -26,6 +26,7 @@ use PublicInbox::View;
 use PublicInbox::Eml;
 use Text::Wrap qw(wrap);
 use PublicInbox::Hval qw(ascii_html to_filename prurl);
+use POSIX qw(strftime);
 my $hl = eval {
 	require PublicInbox::HlMod;
 	PublicInbox::HlMod->new;
@@ -337,7 +338,7 @@ sub show_commit ($$) {
 	$qsp->psgi_qx($ctx->{env}, undef, \&show_commit_start, $ctx);
 }
 
-sub show_other ($$) {
+sub show_other ($$) { # just in case...
 	my ($ctx, $res) = @_;
 	my ($git, $oid, $type, $size) = @$res;
 	$size > $MAX_SIZE and return html_page($ctx, 200,
@@ -421,6 +422,42 @@ sub show_tree ($$) {
 	$qsp->psgi_qx($ctx->{env}, undef, \&show_tree_result, $ctx);
 }
 
+# returns seconds offset from git TZ offset
+sub tz_adj ($) {
+	my ($tz) = @_; # e.g "-0700"
+	$tz = int($tz);
+	my $mm = $tz < 0 ? -$tz : $tz;
+	$mm = int($mm / 100) * 60 + ($mm % 100);
+	$mm = $tz < 0 ? -$mm : $mm;
+	($mm * 60);
+}
+
+sub show_tag_result { # git->cat_async callback
+	my ($bref, $oid, $type, $size, $ctx) = @_;
+	utf8::decode($$bref);
+	my $l = PublicInbox::Linkify->new;
+	$$bref = $l->to_html($$bref);
+	$$bref =~ s!^object ([a-f0-9]+)!object <a
+href=../../$1/s/>$1</a>!;
+
+	$$bref =~ s/^(tagger .*&gt; )([0-9]+) ([\-+]?[0-9]+)/$1.strftime(
+		'%Y-%m-%d %H:%M:%S', gmtime($2 + tz_adj($3)))." $3"/sme;
+	# TODO: download link
+	html_page($ctx, 200, '<pre>', $$bref, '</pre>', dbg_log($ctx));
+}
+
+sub show_tag ($$) {
+	my ($ctx, $res) = @_;
+	my ($git, $oid) = @$res;
+	$ctx->{git} = $git;
+	if ($ctx->{env}->{'pi-httpd.async'}) {
+		ibx_async_cat($ctx, $oid, \&show_tag_result, $ctx);
+	} else { # synchronous (generic PSGI)
+		$git->cat_async($oid, \&show_tag_result, $ctx);
+		$git->cat_async_wait;
+	}
+}
+
 # user_cb for SolverGit, called as: user_cb->($result_or_error, $uarg)
 sub solve_result {
 	my ($res, $ctx) = @_;
@@ -431,6 +468,7 @@ sub solve_result {
 	my ($git, $oid, $type, $size, $di) = @$res;
 	return show_commit($ctx, $res) if $type eq 'commit';
 	return show_tree($ctx, $res) if $type eq 'tree';
+	return show_tag($ctx, $res) if $type eq 'tag';
 	return show_other($ctx, $res) if $type ne 'blob';
 	my $path = to_filename($di->{path_b} // $hints->{path_b} // 'blob');
 	my $raw_link = "(<a\nhref=$path>raw</a>)";
diff --git a/xt/solver.t b/xt/solver.t
index cd894edd..40a5f81f 100644
--- a/xt/solver.t
+++ b/xt/solver.t
@@ -29,6 +29,7 @@ my $todo = {
 		'6aa8857a11/s/?b=protocol.c',
 		'96f1c7f/s/', # TODO: b=contrib/completion/git-completion.bash
 		'b76f2c0/s/?b=po/zh_CN.po',
+		'c2f3bf071ee90b01f2d629921bb04c4f798f02fa/s/', # tag
 	],
 };
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-10-10 21:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-10 21:34 [PATCH 0/3] www: viewvcs: tags + minor updates Eric Wong
2022-10-10 21:34 ` [PATCH 1/3] viewvcs: avoid one ascii_html call Eric Wong
2022-10-10 21:34 ` [PATCH 2/3] xt/solver: skip on missing publicinbox.git.coderepo Eric Wong
2022-10-10 21:34 ` [PATCH 3/3] www: viewvcs: display annotated tags as discreet objects Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).