Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-07-08 21:23:07 +0300
committerJunio C Hamano <gitster@pobox.com>2023-07-08 21:23:07 +0300
commit7f5ad0ca8d1d7db7a21755af34251714d86b2ec1 (patch)
tree8b71767227de1c77adf50c36cc9f0d567046c9ba /read-cache.c
parentd52a45cf5635f9f40a99ddc6efa92713f2d357b4 (diff)
parent2ee045eea103e8818ffe0c4085fad3f6b535c8d6 (diff)
Merge branch 'js/empty-index-fixes'
A few places failed to differenciate the case where the index is truly empty (nothing added) and we haven't yet read from the on-disk index file, which have been corrected. * js/empty-index-fixes: commit -a -m: allow the top-level tree to become empty again split-index: accept that a base index can be empty do_read_index(): always mark index as initialized unless erroring out
Diffstat (limited to 'read-cache.c')
-rw-r--r--read-cache.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/read-cache.c b/read-cache.c
index b9a995e5a1..27703e1446 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2236,6 +2236,7 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
if (fd < 0) {
if (!must_exist && errno == ENOENT) {
set_new_index_sparsity(istate);
+ istate->initialized = 1;
return 0;
}
die_errno(_("%s: index file open failed"), path);
@@ -2405,12 +2406,14 @@ int read_index_from(struct index_state *istate, const char *path,
base_oid_hex = oid_to_hex(&split_index->base_oid);
base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_oid_hex);
- trace2_region_enter_printf("index", "shared/do_read_index",
- the_repository, "%s", base_path);
- ret = do_read_index(split_index->base, base_path, 0);
- trace2_region_leave_printf("index", "shared/do_read_index",
- the_repository, "%s", base_path);
- if (!ret) {
+ if (file_exists(base_path)) {
+ trace2_region_enter_printf("index", "shared/do_read_index",
+ the_repository, "%s", base_path);
+
+ ret = do_read_index(split_index->base, base_path, 0);
+ trace2_region_leave_printf("index", "shared/do_read_index",
+ the_repository, "%s", base_path);
+ } else {
char *path_copy = xstrdup(path);
char *base_path2 = xstrfmt("%s/sharedindex.%s",
dirname(path_copy), base_oid_hex);