diff --git a/include/git2/repository.h b/include/git2/repository.h index 0d67ff8cc..493e82ad5 100644 --- a/include/git2/repository.h +++ b/include/git2/repository.h @@ -220,6 +220,14 @@ GIT_EXTERN(const char *) git_repository_path(git_repository *repo); */ GIT_EXTERN(const char *) git_repository_workdir(git_repository *repo); +/** + * Check if a repository is bare + * + * @param repo Repo to test + * @return 1 if the repository is empty, 0 otherwise. + */ +GIT_EXTERN(int) git_repository_is_bare(git_repository *repo); + /** @} */ GIT_END_DECL #endif diff --git a/src/repository.c b/src/repository.c index 0dd36688b..32ca8dd79 100644 --- a/src/repository.c +++ b/src/repository.c @@ -486,3 +486,9 @@ const char *git_repository_workdir(git_repository *repo) assert(repo); return repo->path_workdir; } + +int git_repository_is_bare(git_repository *repo) +{ + assert(repo); + return repo->is_bare; +} diff --git a/tests/t12-repo.c b/tests/t12-repo.c index 70dba4255..4e51f1b15 100644 --- a/tests/t12-repo.c +++ b/tests/t12-repo.c @@ -126,7 +126,14 @@ static int ensure_repository_init( if (repo->path_index != NULL || expected_path_index != NULL) { if (git__suffixcmp(repo->path_index, expected_path_index) != 0) goto cleanup; - } + + if (git_repository_is_bare(repo) == 1) + goto cleanup; + } else if (git_repository_is_bare(repo) == 0) + goto cleanup; + + if (git_repository_is_empty(repo) == 0) + goto cleanup; git_repository_free(repo); rmdir_recurs(working_directory);