hash: provide per-algorithm null OIDs
Up until recently, object IDs did not have an algorithm member, only a hash. Consequently, it was possible to share one null (all-zeros) object ID among all hash algorithms. Now that we're going to be handling objects from multiple hash algorithms, it's important to make sure that all object IDs have a correct algorithm field. Introduce a per-algorithm null OID, and add it to struct hash_algo. Introduce a wrapper function as well, and use it everywhere we used to use the null_oid constant. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
5a6dce70d7
commit
14228447c9
26
submodule.c
26
submodule.c
@ -113,7 +113,7 @@ int update_path_in_gitmodules(const char *oldpath, const char *newpath)
|
||||
if (is_gitmodules_unmerged(the_repository->index))
|
||||
die(_("Cannot change unmerged .gitmodules, resolve merge conflicts first"));
|
||||
|
||||
submodule = submodule_from_path(the_repository, &null_oid, oldpath);
|
||||
submodule = submodule_from_path(the_repository, null_oid(), oldpath);
|
||||
if (!submodule || !submodule->name) {
|
||||
warning(_("Could not find section in .gitmodules where path=%s"), oldpath);
|
||||
return -1;
|
||||
@ -142,7 +142,7 @@ int remove_path_from_gitmodules(const char *path)
|
||||
if (is_gitmodules_unmerged(the_repository->index))
|
||||
die(_("Cannot change unmerged .gitmodules, resolve merge conflicts first"));
|
||||
|
||||
submodule = submodule_from_path(the_repository, &null_oid, path);
|
||||
submodule = submodule_from_path(the_repository, null_oid(), path);
|
||||
if (!submodule || !submodule->name) {
|
||||
warning(_("Could not find section in .gitmodules where path=%s"), path);
|
||||
return -1;
|
||||
@ -188,7 +188,8 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt,
|
||||
const char *path)
|
||||
{
|
||||
const struct submodule *submodule = submodule_from_path(the_repository,
|
||||
&null_oid, path);
|
||||
null_oid(),
|
||||
path);
|
||||
if (submodule) {
|
||||
const char *ignore;
|
||||
char *key;
|
||||
@ -244,7 +245,7 @@ int is_submodule_active(struct repository *repo, const char *path)
|
||||
const struct string_list *sl;
|
||||
const struct submodule *module;
|
||||
|
||||
module = submodule_from_path(repo, &null_oid, path);
|
||||
module = submodule_from_path(repo, null_oid(), path);
|
||||
|
||||
/* early return if there isn't a path->module mapping */
|
||||
if (!module)
|
||||
@ -745,7 +746,7 @@ const struct submodule *submodule_from_ce(const struct cache_entry *ce)
|
||||
if (!should_update_submodules())
|
||||
return NULL;
|
||||
|
||||
return submodule_from_path(the_repository, &null_oid, ce->name);
|
||||
return submodule_from_path(the_repository, null_oid(), ce->name);
|
||||
}
|
||||
|
||||
static struct oid_array *submodule_commits(struct string_list *submodules,
|
||||
@ -1037,7 +1038,7 @@ int find_unpushed_submodules(struct repository *r,
|
||||
const struct submodule *submodule;
|
||||
const char *path = NULL;
|
||||
|
||||
submodule = submodule_from_name(r, &null_oid, name->string);
|
||||
submodule = submodule_from_name(r, null_oid(), name->string);
|
||||
if (submodule)
|
||||
path = submodule->path;
|
||||
else
|
||||
@ -1224,7 +1225,7 @@ static void calculate_changed_submodule_paths(struct repository *r,
|
||||
const struct submodule *submodule;
|
||||
const char *path = NULL;
|
||||
|
||||
submodule = submodule_from_name(r, &null_oid, name->string);
|
||||
submodule = submodule_from_name(r, null_oid(), name->string);
|
||||
if (submodule)
|
||||
path = submodule->path;
|
||||
else
|
||||
@ -1361,7 +1362,7 @@ static struct fetch_task *fetch_task_create(struct repository *r,
|
||||
struct fetch_task *task = xmalloc(sizeof(*task));
|
||||
memset(task, 0, sizeof(*task));
|
||||
|
||||
task->sub = submodule_from_path(r, &null_oid, path);
|
||||
task->sub = submodule_from_path(r, null_oid(), path);
|
||||
if (!task->sub) {
|
||||
/*
|
||||
* No entry in .gitmodules? Technically not a submodule,
|
||||
@ -1917,7 +1918,7 @@ int submodule_move_head(const char *path,
|
||||
if (old_head && !is_submodule_populated_gently(path, error_code_ptr))
|
||||
return 0;
|
||||
|
||||
sub = submodule_from_path(the_repository, &null_oid, path);
|
||||
sub = submodule_from_path(the_repository, null_oid(), path);
|
||||
|
||||
if (!sub)
|
||||
BUG("could not get submodule information for '%s'", path);
|
||||
@ -2076,7 +2077,7 @@ static void relocate_single_git_dir_into_superproject(const char *path)
|
||||
|
||||
real_old_git_dir = real_pathdup(old_git_dir, 1);
|
||||
|
||||
sub = submodule_from_path(the_repository, &null_oid, path);
|
||||
sub = submodule_from_path(the_repository, null_oid(), path);
|
||||
if (!sub)
|
||||
die(_("could not lookup name for submodule '%s'"), path);
|
||||
|
||||
@ -2135,7 +2136,7 @@ void absorb_git_dir_into_superproject(const char *path,
|
||||
* superproject did not rewrite the git file links yet,
|
||||
* fix it now.
|
||||
*/
|
||||
sub = submodule_from_path(the_repository, &null_oid, path);
|
||||
sub = submodule_from_path(the_repository, null_oid(), path);
|
||||
if (!sub)
|
||||
die(_("could not lookup name for submodule '%s'"), path);
|
||||
connect_work_tree_and_git_dir(path,
|
||||
@ -2283,7 +2284,8 @@ int submodule_to_gitdir(struct strbuf *buf, const char *submodule)
|
||||
strbuf_addstr(buf, git_dir);
|
||||
}
|
||||
if (!is_git_directory(buf->buf)) {
|
||||
sub = submodule_from_path(the_repository, &null_oid, submodule);
|
||||
sub = submodule_from_path(the_repository, null_oid(),
|
||||
submodule);
|
||||
if (!sub) {
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
|
||||
Reference in New Issue
Block a user