diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/attr.c | 2 | ||||
-rw-r--r-- | src/repository.c | 26 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/attr.c b/src/attr.c index 05b0c1b3c..1decb5ba8 100644 --- a/src/attr.c +++ b/src/attr.c @@ -426,6 +426,8 @@ static int collect_attr_files( error = git_path_dirname_r(&dir, path); if (error < 0) goto cleanup; + if (dir.size == 1 && dir.ptr[0] == '.') + git_buf_clear(&dir); /* in precendence order highest to lowest: * - $GIT_DIR/info/attributes diff --git a/src/repository.c b/src/repository.c index d86d8905a..39a4f02b9 100644 --- a/src/repository.c +++ b/src/repository.c @@ -1681,6 +1681,32 @@ int git_repository_is_bare(git_repository *repo) return repo->is_bare; } +int git_repository_set_bare(git_repository *repo) +{ + int error; + git_config *config; + + assert(repo); + + if (repo->is_bare) + return 0; + + if ((error = git_repository_config__weakptr(&config, repo)) < 0 || + (error = git_config_set_bool(config, "core.bare", false)) < 0) + goto done; + + error = git_config__update_entry(config, "core.worktree", NULL, true, true); + + git__free(repo->workdir); + repo->workdir = NULL; + + repo->is_bare = 1; + +done: + git_config_free(config); + return error; +} + int git_repository_head_tree(git_tree **tree, git_repository *repo) { git_reference *head; |