Switch empty tree and blob lookups to use hash abstraction

Switch the uses of empty_tree_oid and empty_blob_oid to use the
current_hash abstraction that represents the current hash algorithm in
use.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson 2017-11-12 21:28:54 +00:00 committed by Junio C Hamano
parent 78a6766802
commit eb0ccfd7f5
10 changed files with 15 additions and 15 deletions

View File

@ -1433,7 +1433,7 @@ static void write_index_patch(const struct am_state *state)
if (!get_oid_tree("HEAD", &head)) if (!get_oid_tree("HEAD", &head))
tree = lookup_tree(&head); tree = lookup_tree(&head);
else else
tree = lookup_tree(&empty_tree_oid); tree = lookup_tree(the_hash_algo->empty_tree);
fp = xfopen(am_path(state, "patch"), "w"); fp = xfopen(am_path(state, "patch"), "w");
init_revisions(&rev_info, NULL); init_revisions(&rev_info, NULL);

View File

@ -514,7 +514,7 @@ static int merge_working_tree(const struct checkout_opts *opts,
} }
tree = parse_tree_indirect(old->commit ? tree = parse_tree_indirect(old->commit ?
&old->commit->object.oid : &old->commit->object.oid :
&empty_tree_oid); the_hash_algo->empty_tree);
init_tree_desc(&trees[0], tree->buffer, tree->size); init_tree_desc(&trees[0], tree->buffer, tree->size);
tree = parse_tree_indirect(&new->commit->object.oid); tree = parse_tree_indirect(&new->commit->object.oid);
init_tree_desc(&trees[1], tree->buffer, tree->size); init_tree_desc(&trees[1], tree->buffer, tree->size);

View File

@ -379,7 +379,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
add_head_to_pending(&rev); add_head_to_pending(&rev);
if (!rev.pending.nr) { if (!rev.pending.nr) {
struct tree *tree; struct tree *tree;
tree = lookup_tree(&empty_tree_oid); tree = lookup_tree(the_hash_algo->empty_tree);
add_pending_object(&rev, &tree->object, "HEAD"); add_pending_object(&rev, &tree->object, "HEAD");
} }
break; break;

View File

@ -545,7 +545,7 @@ static int pull_into_void(const struct object_id *merge_head,
* index/worktree changes that the user already made on the unborn * index/worktree changes that the user already made on the unborn
* branch. * branch.
*/ */
if (checkout_fast_forward(&empty_tree_oid, merge_head, 0)) if (checkout_fast_forward(the_hash_algo->empty_tree, merge_head, 0))
return 1; return 1;
if (update_ref("initial pull", "HEAD", merge_head, curr_head, 0, UPDATE_REFS_DIE_ON_ERR)) if (update_ref("initial pull", "HEAD", merge_head, curr_head, 0, UPDATE_REFS_DIE_ON_ERR))

View File

@ -1024,22 +1024,22 @@ extern const struct object_id empty_blob_oid;
static inline int is_empty_blob_sha1(const unsigned char *sha1) static inline int is_empty_blob_sha1(const unsigned char *sha1)
{ {
return !hashcmp(sha1, EMPTY_BLOB_SHA1_BIN); return !hashcmp(sha1, the_hash_algo->empty_blob->hash);
} }
static inline int is_empty_blob_oid(const struct object_id *oid) static inline int is_empty_blob_oid(const struct object_id *oid)
{ {
return !hashcmp(oid->hash, EMPTY_BLOB_SHA1_BIN); return !oidcmp(oid, the_hash_algo->empty_blob);
} }
static inline int is_empty_tree_sha1(const unsigned char *sha1) static inline int is_empty_tree_sha1(const unsigned char *sha1)
{ {
return !hashcmp(sha1, EMPTY_TREE_SHA1_BIN); return !hashcmp(sha1, the_hash_algo->empty_tree->hash);
} }
static inline int is_empty_tree_oid(const struct object_id *oid) static inline int is_empty_tree_oid(const struct object_id *oid)
{ {
return !hashcmp(oid->hash, EMPTY_TREE_SHA1_BIN); return !oidcmp(oid, the_hash_algo->empty_tree);
} }
/* set default permissions by passing mode arguments to open(2) */ /* set default permissions by passing mode arguments to open(2) */

View File

@ -217,7 +217,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
} else if (revs->diffopt.ita_invisible_in_index && } else if (revs->diffopt.ita_invisible_in_index &&
ce_intent_to_add(ce)) { ce_intent_to_add(ce)) {
diff_addremove(&revs->diffopt, '+', ce->ce_mode, diff_addremove(&revs->diffopt, '+', ce->ce_mode,
&empty_tree_oid, 0, the_hash_algo->empty_tree, 0,
ce->name, 0); ce->name, 0);
continue; continue;
} }

View File

@ -2081,7 +2081,7 @@ int merge_recursive(struct merge_options *o,
/* if there is no common ancestor, use an empty tree */ /* if there is no common ancestor, use an empty tree */
struct tree *tree; struct tree *tree;
tree = lookup_tree(&empty_tree_oid); tree = lookup_tree(the_hash_algo->empty_tree);
merged_common_ancestors = make_virtual_commit(tree, "ancestor"); merged_common_ancestors = make_virtual_commit(tree, "ancestor");
} }

View File

@ -595,7 +595,7 @@ int notes_merge(struct notes_merge_options *o,
bases = get_merge_bases(local, remote); bases = get_merge_bases(local, remote);
if (!bases) { if (!bases) {
base_oid = &null_oid; base_oid = &null_oid;
base_tree_oid = &empty_tree_oid; base_tree_oid = the_hash_algo->empty_tree;
if (o->verbosity >= 4) if (o->verbosity >= 4)
printf("No merge base found; doing history-less merge\n"); printf("No merge base found; doing history-less merge\n");
} else if (!bases->next) { } else if (!bases->next) {

View File

@ -347,7 +347,7 @@ static int read_oneliner(struct strbuf *buf,
static struct tree *empty_tree(void) static struct tree *empty_tree(void)
{ {
return lookup_tree(&empty_tree_oid); return lookup_tree(the_hash_algo->empty_tree);
} }
static int error_dirty_index(struct replay_opts *opts) static int error_dirty_index(struct replay_opts *opts)
@ -705,7 +705,7 @@ static int is_original_commit_empty(struct commit *commit)
oid_to_hex(&parent->object.oid)); oid_to_hex(&parent->object.oid));
ptree_oid = &parent->tree->object.oid; ptree_oid = &parent->tree->object.oid;
} else { } else {
ptree_oid = &empty_tree_oid; /* commit is root */ ptree_oid = the_hash_algo->empty_tree; /* commit is root */
} }
return !oidcmp(ptree_oid, &commit->tree->object.oid); return !oidcmp(ptree_oid, &commit->tree->object.oid);
@ -958,7 +958,7 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
} else { } else {
unborn = get_oid("HEAD", &head); unborn = get_oid("HEAD", &head);
if (unborn) if (unborn)
oidcpy(&head, &empty_tree_oid); oidcpy(&head, the_hash_algo->empty_tree);
if (index_differs_from(unborn ? EMPTY_TREE_SHA1_HEX : "HEAD", if (index_differs_from(unborn ? EMPTY_TREE_SHA1_HEX : "HEAD",
NULL, 0)) NULL, 0))
return error_dirty_index(opts); return error_dirty_index(opts);

View File

@ -587,7 +587,7 @@ void show_submodule_inline_diff(struct diff_options *o, const char *path,
struct object_id *one, struct object_id *two, struct object_id *one, struct object_id *two,
unsigned dirty_submodule) unsigned dirty_submodule)
{ {
const struct object_id *old = &empty_tree_oid, *new = &empty_tree_oid; const struct object_id *old = the_hash_algo->empty_tree, *new = the_hash_algo->empty_tree;
struct commit *left = NULL, *right = NULL; struct commit *left = NULL, *right = NULL;
struct commit_list *merge_bases = NULL; struct commit_list *merge_bases = NULL;
struct child_process cp = CHILD_PROCESS_INIT; struct child_process cp = CHILD_PROCESS_INIT;