--- /dev/null
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+my $GIT_ROOT = '/var/lib/git';
+my $BASE_URL = 'https://gitweb.nataraj.world';
+
+my $repo = $ENV{GIT_REPO};
+
+$repo =~ s{[^a-zA-Z0-9._-]}{}g;
+
+die unless $repo;
+
+my $git_dir = "$GIT_ROOT/$repo";
+
+print "Content-Type: text/html; charset=utf-8\r\n";
+print "Cache-Control: no-store, no-cache, must-revalidate\r\n";
+print "\r\n";
+
+open(my $fh, '-|', 'git', "--git-dir=$git_dir", 'for-each-ref',
+ '--format=%(refname:short)',
+ 'refs/heads/')
+ or die "git failed: $!";
+
+my @branches;
+while (<$fh>) {
+ chomp;
+ push @branches, $_;
+}
+close($fh);
+
+print <<HTML;
+<!DOCTYPE html>
+<html>
+<head><meta charset="utf-8">
+<title>git branches: $repo</title>
+</head>
+<body>
+<h2>git branches: $repo</h2>
+<ul>
+HTML
+
+for my $branch (@branches) {
+ my $log_url = "$BASE_URL/git4ai-log/$repo/$branch";
+ print "<li><a href=\"$log_url\">$branch</a></li>\n";
+}
+
+print "</ul>\n</body></html>\n";
~^/git4ai-cat-file/ /srv/cgi/git4ai-cat-file.pl;
~^/git4ai-log/ /srv/cgi/git4ai-log.pl;
~^/git4ai-ls-tree/ /srv/cgi/git4ai-ls-tree.pl;
+ ~^/git4ai-branches/ /srv/cgi/git4ai-branches.pl;
~^/git4ai/ /srv/cgi/git4ai.pl;
}
add_header Cache-Control "no-store" always;
}
+location ~ "^/git4ai-branches/([^/]+)$" {
+ return 302 https://gitweb.nataraj.world/git4ai-branches/$1/-/-/-/$request_id;
+ add_header Cache-Control "no-store" always;
+}
+
# repo branch id offset nonce
location ~ "^/git4ai[^/]*/([a-zA-Z0-9._-]+)/([a-zA-Z0-9._-]+|-)/([0-9a-f]{4,40}|-)/([0-9]+|-)(?:/([a-zA-Z0-9]+))?$" {
set $git_repo $1;