about summary refs log tree commit diff
path: root/web
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-12-21T23·36+0000
committerVincent Ambo <tazjin@google.com>2019-12-21T23·36+0000
commit9ad47965387c63e287afac86c498566e37265248 (patch)
treef263eb41f0e403a271983ae7067f05251e8b3c4a /web
parent03acae2f85a1cda6057ab17549941c2ce16464ed (diff)
feat(cgit-taz): Add patches for subtree about/ handling r/289
1. Generate links to subtree about pages.
2. Render README files in subtrees, too.
Diffstat (limited to 'web')
-rw-r--r--web/cgit-taz/0001-cgit_monorepo_urls.patch (renamed from web/cgit-taz/cgit_depot_url.patch)17
-rw-r--r--web/cgit-taz/0002-cgit_subtree_readmes.patch46
-rw-r--r--web/cgit-taz/0003-cgit_subtree_about_links.patch50
-rw-r--r--web/cgit-taz/default.nix14
-rw-r--r--web/cgit-taz/thttpd_cgi_idx.patch (renamed from web/cgit-taz/cgit_idx.patch)0
5 files changed, 123 insertions, 4 deletions
diff --git a/web/cgit-taz/cgit_depot_url.patch b/web/cgit-taz/0001-cgit_monorepo_urls.patch
index cb81a2a49a..624a74b5db 100644
--- a/web/cgit-taz/cgit_depot_url.patch
+++ b/web/cgit-taz/0001-cgit_monorepo_urls.patch
@@ -1,3 +1,17 @@
+From f6646e5a6da29da979d6954feba9d85556bc6936 Mon Sep 17 00:00:00 2001
+From: Vincent Ambo <tazjin@google.com>
+Date: Sat, 21 Dec 2019 18:41:45 +0000
+Subject: [PATCH 1/3] feat: Generate monorepo compatible URLs
+
+Generates URLs that do not include the repository name.
+
+On git.tazj.in, only one repository (depot) is served - hence URLs
+generated by cgit need not include the name.
+---
+ cmd.c       | 24 +-----------------------
+ ui-shared.c | 29 +++++++++--------------------
+ 2 files changed, 10 insertions(+), 43 deletions(-)
+
 diff --git a/cmd.c b/cmd.c
 index 63f0ae5..b37b79d 100644
 --- a/cmd.c
@@ -95,3 +109,6 @@ index 739505a..c7c3754 100644
  		cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL);
  		if (ctx.env.authenticated) {
  			html("</td><td class='form'>");
+-- 
+2.24.1.735.g03f4e72817-goog
+
diff --git a/web/cgit-taz/0002-cgit_subtree_readmes.patch b/web/cgit-taz/0002-cgit_subtree_readmes.patch
new file mode 100644
index 0000000000..f3aba10215
--- /dev/null
+++ b/web/cgit-taz/0002-cgit_subtree_readmes.patch
@@ -0,0 +1,46 @@
+From 61500898c7d1363f88b763c7778cf1a8dfd13aca Mon Sep 17 00:00:00 2001
+From: Vincent Ambo <tazjin@google.com>
+Date: Sat, 21 Dec 2019 22:58:19 +0000
+Subject: [PATCH 2/3] feat(ui-summary): Attempt to use README at each subtree
+
+This means that individual subtrees of a repository will also have
+their READMEs rendered on the about page, for example:
+
+    /foo/bar/README.md
+
+Will render on:
+
+    /about/foo/bar/
+
+This is useful for monorepo setups in which subtrees represent
+individual projects.
+---
+ ui-summary.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/ui-summary.c b/ui-summary.c
+index 8e81ac4..34ce4e9 100644
+--- a/ui-summary.c
++++ b/ui-summary.c
+@@ -128,6 +128,18 @@ void cgit_print_repo_readme(char *path)
+ 			goto done;
+ 	}
+ 
++	/* Determine which file to serve by checking whether the given filename is
++	 * already a valid file and otherwise appending the expected file name of
++	 * the readme.
++	 *
++	 * If neither yield a valid file, the user gets a blank page. Could probably
++	 * do with an error message in between there, but whatever.
++	 */
++	if (path && ref && !cgit_ref_path_exists(filename, ref, 1)) {
++	  filename = fmtalloc("%s/%s", path, ctx.repo->readme.items[0].string);
++	  free_filename = 1;
++	}
++
+ 	/* Print the calculated readme, either from the git repo or from the
+ 	 * filesystem, while applying the about-filter.
+ 	 */
+-- 
+2.24.1.735.g03f4e72817-goog
+
diff --git a/web/cgit-taz/0003-cgit_subtree_about_links.patch b/web/cgit-taz/0003-cgit_subtree_about_links.patch
new file mode 100644
index 0000000000..6b3d0a70b1
--- /dev/null
+++ b/web/cgit-taz/0003-cgit_subtree_about_links.patch
@@ -0,0 +1,50 @@
+From 531b55dc96bb7ee2ce52a3612021e1c1f4ddac8a Mon Sep 17 00:00:00 2001
+From: Vincent Ambo <tazjin@google.com>
+Date: Sat, 21 Dec 2019 23:27:28 +0000
+Subject: [PATCH 3/3] feat(ui-shared): Generate links to about pages from
+ subtrees
+
+If you're on tree/foo/bar, the about link will now point to
+about/foo/bar.
+
+Currently the annoying thing about this is that it will also do it for
+files.
+---
+ ui-shared.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/ui-shared.c b/ui-shared.c
+index c7c3754..c37835a 100644
+--- a/ui-shared.c
++++ b/ui-shared.c
+@@ -297,6 +297,12 @@ void cgit_tag_link(const char *name, const char *title, const char *class,
+ 	reporevlink("tag", name, title, class, tag, NULL, NULL);
+ }
+ 
++void cgit_about_link(const char *name, const char *title, const char *class,
++		    const char *head, const char *rev, const char *path)
++{
++	reporevlink("about", name, title, class, head, rev, path);
++}
++
+ void cgit_tree_link(const char *name, const char *title, const char *class,
+ 		    const char *head, const char *rev, const char *path)
+ {
+@@ -985,10 +991,10 @@ void cgit_print_pageheader(void)
+ 
+ 	html("<table class='tabs'><tr><td>\n");
+ 	if (ctx.env.authenticated && ctx.repo) {
+-		if (ctx.repo->readme.nr)
+-			reporevlink("about", "about", NULL,
+-				    hc("about"), ctx.qry.head, NULL,
+-				    NULL);
++		if (ctx.repo->readme.nr) {
++			cgit_about_link("about", NULL, hc("about"), ctx.qry.head,
++					 ctx.qry.sha1, ctx.qry.vpath);
++		}
+ 		cgit_summary_link("summary", NULL, hc("summary"),
+ 				  ctx.qry.head);
+ 		cgit_refs_link("refs", NULL, hc("refs"), ctx.qry.head,
+-- 
+2.24.1.735.g03f4e72817-goog
+
diff --git a/web/cgit-taz/default.nix b/web/cgit-taz/default.nix
index c615d3bcb8..7dc5d9070a 100644
--- a/web/cgit-taz/default.nix
+++ b/web/cgit-taz/default.nix
@@ -9,10 +9,13 @@
 with pkgs.third_party;
 
 let
-  # Patched version of cgit that builds repository URLs correctly
-  # (since only one repository is served)
+  # Patched version of cgit that has monorepo-specific features.
   monocgit = cgit.overrideAttrs(old: {
-    patches = old.patches ++ [ ./cgit_depot_url.patch ];
+    patches = old.patches ++ [
+      ./0001-cgit_monorepo_urls.patch
+      ./0002-cgit_subtree_readmes.patch
+      ./0003-cgit_subtree_about_links.patch
+    ];
   });
 
   cgitConfig = writeText "cgitrc" ''
@@ -68,7 +71,10 @@ let
      #ifdef CGI_LD_LIBRARY_PATH
   '';
   thttpdCgit = thttpd.overrideAttrs(old: {
-    patches = [ ./cgit_idx.patch thttpdConfigPatch ];
+    patches = [
+      ./thttpd_cgi_idx.patch
+      thttpdConfigPatch
+    ];
   });
 in writeShellScriptBin "cgit-launch" ''
   exec ${thttpdCgit}/bin/thttpd -D -C ${thttpdConfig}
diff --git a/web/cgit-taz/cgit_idx.patch b/web/cgit-taz/thttpd_cgi_idx.patch
index 67dbc0c7ab..67dbc0c7ab 100644
--- a/web/cgit-taz/cgit_idx.patch
+++ b/web/cgit-taz/thttpd_cgi_idx.patch