зеркало из https://github.com/microsoft/git.git
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:
Родитель
eef71904ff
Коммит
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)
|
||||
{
|
||||
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) {
|
||||
case OBJ_COMMIT:
|
||||
return 0;
|
||||
goto cleanup;
|
||||
case OBJ_BAD:
|
||||
/*
|
||||
* Object is missing or invalid. If invalid, an error message
|
||||
* has already been printed.
|
||||
*/
|
||||
cb->result = 0;
|
||||
return 0;
|
||||
goto cleanup;
|
||||
default:
|
||||
die(_("submodule entry '%s' (%s) is a %s, not a commit"),
|
||||
cb->path, oid_to_hex(oid), type_name(type));
|
||||
}
|
||||
cleanup:
|
||||
repo_clear(&subrepo);
|
||||
return 0;
|
||||
}
|
||||
|
||||
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
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
|
||||
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
pwd=$(pwd)
|
||||
|
|
|
@ -5,6 +5,9 @@ test_description='test push with submodules'
|
|||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
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_expect_success setup '
|
||||
|
|
|
@ -5,6 +5,9 @@ test_description='pushing to a repository using push options'
|
|||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
|
||||
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
mk_repo_pair () {
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
test_description='pull can handle submodules'
|
||||
|
||||
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
|
||||
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
|
||||
|
||||
. ./test-lib.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.
|
||||
'
|
||||
|
||||
GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB=1
|
||||
export GIT_TEST_FATAL_REGISTER_SUBMODULE_ODB
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'sparse checkout setup which hides .gitmodules' '
|
||||
|
|
Загрузка…
Ссылка в новой задаче