It is okay to not have a .gitconfig file Opening a repo is generating an error if you don't have a .gitconfig file in your home directory, but that should be legal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
diff --git a/src/config.c b/src/config.c
index 412965b..fc9ea65 100644
--- a/src/config.c
+++ b/src/config.c
@@ -93,7 +93,7 @@ int git_config_add_file_ondisk(
assert(cfg && path);
if (!git_path_isfile(path)) {
- giterr_set(GITERR_CONFIG, "File '%s' doesn't exists.", path);
+ giterr_set(GITERR_CONFIG, "Cannot find config file '%s'", path);
return GIT_ENOTFOUND;
}
diff --git a/src/repository.c b/src/repository.c
index 38382a9..92eb6e1 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -450,37 +450,44 @@ static int load_config(
const char *xdg_config_path,
const char *system_config_path)
{
+ int error;
git_buf config_path = GIT_BUF_INIT;
git_config *cfg = NULL;
assert(repo && out);
- if (git_config_new(&cfg) < 0)
- return -1;
+ if ((error = git_config_new(&cfg)) < 0)
+ return error;
- if (git_buf_joinpath(
- &config_path, repo->path_repository, GIT_CONFIG_FILENAME_INREPO) < 0)
+ error = git_buf_joinpath(
+ &config_path, repo->path_repository, GIT_CONFIG_FILENAME_INREPO);
+ if (error < 0)
goto on_error;
- if (git_config_add_file_ondisk(cfg, config_path.ptr, GIT_CONFIG_LEVEL_LOCAL, 0) < 0)
+ if ((error = git_config_add_file_ondisk(
+ cfg, config_path.ptr, GIT_CONFIG_LEVEL_LOCAL, 0)) < 0 &&
+ error != GIT_ENOTFOUND)
goto on_error;
git_buf_free(&config_path);
- if (global_config_path != NULL) {
- if (git_config_add_file_ondisk(cfg, global_config_path, GIT_CONFIG_LEVEL_GLOBAL, 0) < 0)
- goto on_error;
- }
+ if (global_config_path != NULL &&
+ (error = git_config_add_file_ondisk(
+ cfg, global_config_path, GIT_CONFIG_LEVEL_GLOBAL, 0)) < 0 &&
+ error != GIT_ENOTFOUND)
+ goto on_error;
- if (xdg_config_path != NULL) {
- if (git_config_add_file_ondisk(cfg, xdg_config_path, GIT_CONFIG_LEVEL_XDG, 0) < 0)
- goto on_error;
- }
+ if (xdg_config_path != NULL &&
+ (error = git_config_add_file_ondisk(
+ cfg, xdg_config_path, GIT_CONFIG_LEVEL_XDG, 0)) < 0 &&
+ error != GIT_ENOTFOUND)
+ goto on_error;
- if (system_config_path != NULL) {
- if (git_config_add_file_ondisk(cfg, system_config_path, GIT_CONFIG_LEVEL_SYSTEM, 0) < 0)
- goto on_error;
- }
+ if (system_config_path != NULL &&
+ (error = git_config_add_file_ondisk(
+ cfg, system_config_path, GIT_CONFIG_LEVEL_SYSTEM, 0)) < 0 &&
+ error != GIT_ENOTFOUND)
+ goto on_error;
*out = cfg;
return 0;
@@ -489,7 +496,7 @@ on_error:
git_buf_free(&config_path);
git_config_free(cfg);
*out = NULL;
- return -1;
+ return error;
}
int git_repository_config__weakptr(git_config **out, git_repository *repo)