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:
parent
eef71904ff
commit
13a2f620b2
16
submodule.c
16
submodule.c
@ -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,
|
||||||
|
@ -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)
|
||||||
|
@ -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 '
|
||||||
|
@ -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 () {
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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' '
|
||||||
|
Loading…
x
Reference in New Issue
Block a user