"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Lucas Gabriel Vuotto <lucas@sexy.is>
Subject:
Make missing worktree author non-fatal in tog
To:
gameoftrees@openbsd.org
Date:
Tue, 10 Dec 2024 21:31:05 +0000

Download raw body.

Thread
Hey,

My tog started dying like this

	$ tog 
	tog: GOT_AUTHOR environment variable is not set

This started happening with a66bb113790d6808d3a1646844962ac4d5153dec .
tog_worktree_status exits with an error if it doesn't manage to find an
author. This is easily reproducible by running tog in a dirty worktree
from a cloned repo while GOT_AUTHOR is unset.

The following patch addresses that, by setting wt_author to "". I don't
consider the situation should be fatal for this purpouse.

btw, I think that wctx->wt_author leaks? I couldn't convince myself that
tog_worktree_status is called only once before worktree_ctx_close.

comments? oks?

	Lucas


-----------------------------------------------
commit d1c57f93c421e5d51c8a515510d153975f1d3640 (wt-author)
from: Lucas Gabriel Vuotto <lucas@sexy.is>
date: Tue Dec 10 21:14:55 2024 UTC
 
 tog: don't make a missing worktree author fatal
 
 Avoids tog from exiting if running it in a dirty checkout of a cloned
 repository while GOT_AUTHOR is unset.
 
diff f6997150bbf387dd302b2fede9eeca6cee620f0f d1c57f93c421e5d51c8a515510d153975f1d3640
commit - f6997150bbf387dd302b2fede9eeca6cee620f0f
commit + d1c57f93c421e5d51c8a515510d153975f1d3640
blob - 2ce26fea02651c5c22189e43095204197b89c0d7
blob + b87b3b6d0e113a46fed343d94e4efc7c1f3c8cd5
--- tog/tog.c
+++ tog/tog.c
@@ -3244,8 +3244,14 @@ tog_worktree_status(struct tog_log_thread_args *ta)
 
 	if (wt_state != 0) {
 		err = get_author(&wctx->wt_author, ta->repo, wt);
-		if (err != NULL)
-			goto done;
+		/* Not finding an author is fine. */
+		if (err != NULL) {
+			wctx->wt_author = strdup("");
+			if (wctx->wt_author == NULL) {
+				/* Propagate the original error. */
+				goto done;
+			}
+		}
 
 		wctx->wt_root = strdup(got_worktree_get_root_path(wt));
 		if (wctx->wt_root == NULL) {