diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-06-13 22:50:46 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-06-13 22:50:46 +0300 |
commit | 549ca8aa7ce73fa3d4d5daabc8929d09b92c4763 (patch) | |
tree | 3c98a07afad31265b01da6d226fa397a3d1e71d9 | |
parent | 4d605b0f38775066be0eaed33c52e0b716035498 (diff) | |
parent | 3737746120d4e16b3a2b3431e34eeb3314edfa8c (diff) |
Merge branch 'jk/index-pack-maint'
"index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
* jk/index-pack-maint:
index-pack: correct install_packed_git() args
index-pack: handle --strict checks of non-repo packs
prepare_commit_graft: treat non-repository as a noop
-rw-r--r-- | builtin/index-pack.c | 8 | ||||
-rw-r--r-- | commit.c | 3 | ||||
-rwxr-xr-x | t/t5300-pack-object.sh | 6 | ||||
-rwxr-xr-x | t/t7415-submodule-names.sh | 10 |
4 files changed, 25 insertions, 2 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 4ab31ed388..74fe2973e1 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -1482,8 +1482,12 @@ static void final(const char *final_pack_name, const char *curr_pack_name, } else chmod(final_index_name, 0444); - if (do_fsck_object) - add_packed_git(final_index_name, strlen(final_index_name), 0); + if (do_fsck_object) { + struct packed_git *p; + p = add_packed_git(final_index_name, strlen(final_index_name), 0); + if (p) + install_packed_git(the_repository, p); + } if (!from_stdin) { printf("%s\n", sha1_to_hex(hash)); @@ -207,6 +207,9 @@ static void prepare_commit_graft(void) if (commit_graft_prepared) return; + if (!startup_info->have_repository) + return; + graft_file = get_graft_file(); read_graft_file(graft_file); /* make sure shallows are read */ diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 87a590c4a9..2336d09dcc 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -421,6 +421,12 @@ test_expect_success 'index-pack <pack> works in non-repo' ' test_path_is_file foo.idx ' +test_expect_success 'index-pack --strict <pack> works in non-repo' ' + rm -f foo.idx && + nongit git index-pack --strict ../foo.pack && + test_path_is_file foo.idx +' + test_expect_success !PTHREADS,C_LOCALE_OUTPUT 'index-pack --threads=N or pack.threads=N warns when no pthreads' ' test_must_fail git index-pack --threads=2 2>err && grep ^warning: err >warnings && diff --git a/t/t7415-submodule-names.sh b/t/t7415-submodule-names.sh index 3c0f1a102a..b68c5f5e85 100755 --- a/t/t7415-submodule-names.sh +++ b/t/t7415-submodule-names.sh @@ -122,6 +122,16 @@ test_expect_success 'transfer.fsckObjects handles odd pack (index)' ' test_must_fail git -C dst.git index-pack --strict --stdin <odd.pack ' +test_expect_success 'index-pack --strict works for non-repo pack' ' + rm -rf dst.git && + git init --bare dst.git && + cp odd.pack dst.git && + test_must_fail git -C dst.git index-pack --strict odd.pack 2>output && + # Make sure we fail due to bad gitmodules content, not because we + # could not read the blob in the first place. + grep gitmodulesName output +' + test_expect_success 'fsck detects symlinked .gitmodules file' ' git init symlink && ( |