Commit Diff


commit - cee4532d76c69b664ebe0589c68439cf0b8054d7
commit + ea371198ec8b032e31b86ddef231db39756a3b44
blob - 579801c1a62932c7ba58ad585ac0ba45e1ddbf06
blob + d16e7c64d5614b5a492b3e1f0528b8742b178362
--- tog/tog.c
+++ tog/tog.c
@@ -3784,8 +3784,19 @@ input_log_view(struct tog_view **new_view, struct tog_
 			err = got_repo_match_object_id(&start_id, NULL,
 			    s->head_ref_name ? s->head_ref_name : GOT_REF_HEAD,
 			    GOT_OBJ_TYPE_COMMIT, &tog_refs, s->repo);
-			if (err)
-				return err;
+			if (err) {
+				if (s->head_ref_name == NULL ||
+				    err->code != GOT_ERR_NOT_REF)
+					return err;
+				/* Try to cope with deleted references. */
+				free(s->head_ref_name);
+				s->head_ref_name = NULL;
+				err = got_repo_match_object_id(&start_id,
+				    NULL, GOT_REF_HEAD, GOT_OBJ_TYPE_COMMIT,
+				    &tog_refs, s->repo);
+				if (err)
+					return err;
+			}
 			free(s->start_id);
 			s->start_id = start_id;
 			s->thread_args.start_id = s->start_id;