about summary refs log tree commit homepage
path: root/lib/PublicInbox/Git.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Git.pm')
-rw-r--r--lib/PublicInbox/Git.pm16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index 90b9214a..9676086f 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -40,6 +40,7 @@ sub new {
         my ($class, $git_dir) = @_;
         my @st;
         $st[7] = $st[10] = 0;
+        # may contain {-wt} field (working-tree (File::Temp::Dir))
         bless { git_dir => $git_dir, st => \@st }, $class
 }
 
@@ -201,6 +202,21 @@ sub packed_bytes {
 
 sub DESTROY { cleanup(@_) }
 
+# show the blob URL for cgit/gitweb/whatever
+sub src_blob_url {
+        my ($self, $oid) = @_;
+        # blob_fmt = "https://example.com/foo.git/blob/%s"
+        if (my $bfu = $self->{blob_fmt_url}) {
+                return sprintf($bfu, $oid);
+        }
+
+        # don't show full FS path, basename should be OK:
+        if ($self->{git_dir} =~ m!/([^/]+)\z!) {
+                return "/path/to/$1";
+        }
+        '???';
+}
+
 1;
 __END__
 =pod