about summary refs log tree commit diff
path: root/third_party/cgit/ui-log.c
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2022-06-21T21·02+0300
committertazjin <tazjin@tvl.su>2022-06-22T10·41+0000
commit45e7f2c3884fdd81356a74afae19eefcdc37dce8 (patch)
tree37d55580e9f57e5d7d06080f9ab82ad0685e01e4 /third_party/cgit/ui-log.c
parentcf91baa93883bc2f61a53f2f6c78348b9cebd7b7 (diff)
feat(3p/cgit): Display depot revisions in log views r/4251
depot revisions are not recognised by git as a specific type of
"decoration" (i.e. fall into `DECORATION_NONE`), which means that cgit
skips them by default.

Displaying them on code.tvl.fyi would be quite nice, so to work around
this we check for the `refs/r/` prefix on skipped decorations and
display them (without the `refs/` prefix) on commits.

Change-Id: Ia9cece3876db471f93ab787258be527739af046b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5891
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Diffstat (limited to 'third_party/cgit/ui-log.c')
-rw-r--r--third_party/cgit/ui-log.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/third_party/cgit/ui-log.c b/third_party/cgit/ui-log.c
index cfa9192b93..6cd258c1cc 100644
--- a/third_party/cgit/ui-log.c
+++ b/third_party/cgit/ui-log.c
@@ -71,6 +71,16 @@ void show_commit_decorations(struct commit *commit)
 		strlcpy(buf, prettify_refname(deco->name), sizeof(buf));
 		switch(deco->type) {
 		case DECORATION_NONE:
+			/* If it is a depot revision, display it, otherwise
+			 * ... */
+			if (strncmp("refs/r/", buf, 7) == 0) {
+				html(" ");
+				cgit_log_link(/* trim 'refs/' */ buf + 5,
+					NULL, "rev-deco", buf, NULL,
+					ctx.qry.vpath, 0, NULL, NULL,
+					ctx.qry.showmsg, 0);
+			}
+
 			/* If the git-core doesn't recognize it,
 			 * don't display anything. */
 			break;