Commit e71505b3 by Kevin Saul

repo: fix worktree iteration when repo has no common directory

When applying an operation to a repository created without a common directory,
which is known to occur in scenarios where custom odb/refdb backends are used,
git_repository_foreach_worktree currently asserts while attempting to open the
repository located in the common directory.

Fix this issue by applying operation to repository supplied when there are no
linked worktrees to iterate (implied by common directory being empty).
parent 6c78fd06
......@@ -2339,6 +2339,12 @@ int git_repository_foreach_worktree(git_repository *repo,
int error;
size_t i;
/* apply operation to repository supplied when commondir is empty, implying there's
* no linked worktrees to iterate, which can occur when using custom odb/refdb
*/
if (!repo->commondir)
return cb(repo, payload);
if ((error = git_repository_open(&worktree_repo, repo->commondir)) < 0 ||
(error = cb(worktree_repo, payload) != 0))
goto out;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment