Commit Diff


commit - 1e022131972893d7b4aa0052ffcd882f3052d24b
commit + 8e6ecdb1ba3f72fe0dcc2176dc6abfb99b800e27
blob - 6bb4d83c2ec663c885893601aafb2d48f211c031
blob + e7a0156fd6a83975ccc4239533fb0dd8f8d19731
--- lib/repository_admin.c
+++ lib/repository_admin.c
@@ -1038,6 +1038,13 @@ load_commit_or_tag(int *ncommits, struct got_object_id
 			id = got_object_tag_get_object_id(tag);
 			switch (obj_type) {
 			case GOT_OBJ_TYPE_COMMIT:
+				if (got_object_idset_contains(traversed_ids,
+				    id))
+					break;
+				err = got_object_idset_add(traversed_ids, id,
+				    NULL);
+				if (err)
+					goto done;
 				err = got_object_open_as_commit(&commit, repo,
 				    id);
 				if (err)