1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-19 20:39:24 +02:00

submodule: pass repo to check_has_commit()

Pass the repo explicitly when calling check_has_commit() to avoid
relying on add_submodule_odb(). With this commit and the parent commit,
the last remaining tests no longer rely on add_submodule_odb(), so mark
these tests accordingly.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Tan 2021-10-08 14:08:19 -07:00 committed by Junio C Hamano
parent eef71904ff
commit 13a2f620b2
6 changed files with 28 additions and 3 deletions

View File

@ -928,23 +928,33 @@ struct has_commit_data {
static int check_has_commit(const struct object_id *oid, void *data) static int check_has_commit(const struct object_id *oid, void *data)
{ {
struct has_commit_data *cb = data; struct has_commit_data *cb = data;
struct repository subrepo;
enum object_type type;
enum object_type type = oid_object_info(cb->repo, oid, NULL); if (repo_submodule_init(&subrepo, cb->repo, cb->path, null_oid())) {
cb->result = 0;
goto cleanup;
}
type = oid_object_info(&subrepo, oid, NULL);
switch (type) { switch (type) {
case OBJ_COMMIT: case OBJ_COMMIT:
return 0; goto cleanup;
case OBJ_BAD: case OBJ_BAD:
/* /*
* Object is missing or invalid. If invalid, an error message * Object is missing or invalid. If invalid, an error message
* has already been printed. * has already been printed.
*/ */
cb->result = 0; cb->result = 0;
return 0; goto cleanup;
default: default:
die(_("submodule entry '%s' (%s) is a %s, not a commit"), die(_("submodule entry '%s' (%s) is a %s, not a commit"),
cb->path, oid_to_hex(oid), type_name(type)); cb->path, oid_to_hex(oid), type_name(type));
} }
cleanup:
repo_clear(&subrepo);
return 0;
} }
static int submodule_has_commits(struct repository *r, static int submodule_has_commits(struct repository *r,

View File

@ -6,6 +6,9 @@ test_description='Recursive "git fetch" for submodules'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
. ./test-lib.sh . ./test-lib.sh
pwd=$(pwd) pwd=$(pwd)

View File

@ -5,6 +5,9 @@ test_description='test push with submodules'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
. ./test-lib.sh . ./test-lib.sh
test_expect_success setup ' test_expect_success setup '

View File

@ -5,6 +5,9 @@ test_description='pushing to a repository using push options'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
. ./test-lib.sh . ./test-lib.sh
mk_repo_pair () { mk_repo_pair () {

View File

@ -2,6 +2,9 @@
test_description='pull can handle submodules' test_description='pull can handle submodules'
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
. ./test-lib.sh . ./test-lib.sh
. "$TEST_DIRECTORY"/lib-submodule-update.sh . "$TEST_DIRECTORY"/lib-submodule-update.sh

View File

@ -12,6 +12,9 @@ The test setup uses a sparse checkout, however the same scenario can be set up
also by committing .gitmodules and then just removing it from the filesystem. also by committing .gitmodules and then just removing it from the filesystem.
' '
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'sparse checkout setup which hides .gitmodules' ' test_expect_success 'sparse checkout setup which hides .gitmodules' '