Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- read-cache.c | 8 ++++ t/t3011-ls-files-json.sh | 13 ++++++ t/t3011/eoie (new) | 96 ++++++++++++++++++++++++++++++++++++++++ t/test-lib.sh | 4 ++ 4 files changed, 121 insertions(+) diff --git a/read-cache.c b/read-cache.c index e5183636fc..37491dd03d 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1731,6 +1731,14 @@ static int read_index_extension(struct index_state *istate, read_fsmonitor_extension(istate, data, sz); break; case CACHE_EXT_ENDOFINDEXENTRIES: + if (istate->jw) { + /* must be synchronized with read_eoie_extension() */ + jw_object_intmax(istate->jw, "offset", get_be32(data)); + jw_object_string(istate->jw, "oid", + hash_to_hex((const unsigned char*)data + sizeof(uint32_t))); + } + /* already handled in do_read_index() */ + break; case CACHE_EXT_INDEXENTRYOFFSETTABLE: /* already handled in do_read_index() */ break; diff --git a/t/t3011-ls-files-json.sh b/t/t3011-ls-files-json.sh index dc57138f5b..9f4ad4c9cf 100755 --- a/t/t3011-ls-files-json.sh +++ b/t/t3011-ls-files-json.sh @@ -90,4 +90,17 @@ test_expect_success 'ls-files --json, rerere extension' ' ) ' +test_expect_success !SINGLE_CPU 'ls-files --json and multicore extensions' ' + git init eoie && + ( + cd eoie && + git config index.threads 2 && + touch one two three four && + git add . && + cp ../filter.sed . && + strip_number offset && + compare_json eoie + ) +' + test_done diff --git a/t/t3011/eoie b/t/t3011/eoie new file mode 100644 index 0000000000..85ec61517b --- /dev/null +++ b/t/t3011/eoie @@ -0,0 +1,96 @@ +{ + "version": 2, + "oid": <string>, + "mtime_sec": <number>, + "mtime_nsec": <number>, + "entries": [ + { + "id": 0, + "name": "four", + "mode": "100644", + "flags": 0, + "oid": <string>, + "stat": { + "ctime_sec": <number>, + "ctime_nsec": <number>, + "mtime_sec": <number>, + "mtime_nsec": <number>, + "device": <number>, + "inode": <number>, + "uid": <number>, + "gid": <number>, + "size": 0 + }, + "file_offset": <number> + }, + { + "id": 1, + "name": "one", + "mode": "100644", + "flags": 0, + "oid": <string>, + "stat": { + "ctime_sec": <number>, + "ctime_nsec": <number>, + "mtime_sec": <number>, + "mtime_nsec": <number>, + "device": <number>, + "inode": <number>, + "uid": <number>, + "gid": <number>, + "size": 0 + }, + "file_offset": <number> + }, + { + "id": 2, + "name": "three", + "mode": "100644", + "flags": 0, + "oid": <string>, + "stat": { + "ctime_sec": <number>, + "ctime_nsec": <number>, + "mtime_sec": <number>, + "mtime_nsec": <number>, + "device": <number>, + "inode": <number>, + "uid": <number>, + "gid": <number>, + "size": 0 + }, + "file_offset": <number> + }, + { + "id": 3, + "name": "two", + "mode": "100644", + "flags": 0, + "oid": <string>, + "stat": { + "ctime_sec": <number>, + "ctime_nsec": <number>, + "mtime_sec": <number>, + "mtime_nsec": <number>, + "device": <number>, + "inode": <number>, + "uid": <number>, + "gid": <number>, + "size": 0 + }, + "file_offset": <number> + } + ], + "extensions": { + "IEOT": { + "file_offset": <number>, + "ext_size": <number> + }, + "EOIE": { + "file_offset": <number>, + "ext_size": <number>, + "offset": <number>, + "oid": <string> + } + } +} diff --git a/t/test-lib.sh b/t/test-lib.sh index 4b346467df..9d5b273b40 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -1611,3 +1611,7 @@ test_lazy_prereq REBASE_P ' test_lazy_prereq FAIL_PREREQS ' test -n "$GIT_TEST_FAIL_PREREQS" ' + +test_lazy_prereq SINGLE_CPU ' + test "$(test-tool online-cpus)" -eq 1 +' -- 2.22.0.rc0.322.g2b0371e29a