builtin/pull: convert to struct object_id

Convert virtually all uses of unsigned char [20] to struct object_id.
Leave all the arguments that come from struct sha1_array, as these will
be converted in a later patch.

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-03-26 16:01:36 +00:00 committed by Junio C Hamano
parent 2eb80bcdcc
commit f9b11147e0

View File

@ -515,7 +515,7 @@ static int run_fetch(const char *repo, const char **refspecs)
* "Pulls into void" by branching off merge_head. * "Pulls into void" by branching off merge_head.
*/ */
static int pull_into_void(const unsigned char *merge_head, static int pull_into_void(const unsigned char *merge_head,
const unsigned char *curr_head) const struct object_id *curr_head)
{ {
/* /*
* Two-way merge: we treat the index as based on an empty tree, * Two-way merge: we treat the index as based on an empty tree,
@ -526,7 +526,7 @@ static int pull_into_void(const unsigned char *merge_head,
if (checkout_fast_forward(EMPTY_TREE_SHA1_BIN, merge_head, 0)) if (checkout_fast_forward(EMPTY_TREE_SHA1_BIN, 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->hash, 0, UPDATE_REFS_DIE_ON_ERR))
return 1; return 1;
return 0; return 0;
@ -647,7 +647,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)
* current branch forked from its remote tracking branch. Returns 0 on success, * current branch forked from its remote tracking branch. Returns 0 on success,
* -1 on failure. * -1 on failure.
*/ */
static int get_rebase_fork_point(unsigned char *fork_point, const char *repo, static int get_rebase_fork_point(struct object_id *fork_point, const char *repo,
const char *refspec) const char *refspec)
{ {
int ret; int ret;
@ -678,7 +678,7 @@ static int get_rebase_fork_point(unsigned char *fork_point, const char *repo,
if (ret) if (ret)
goto cleanup; goto cleanup;
ret = get_sha1_hex(sb.buf, fork_point); ret = get_oid_hex(sb.buf, fork_point);
if (ret) if (ret)
goto cleanup; goto cleanup;
@ -691,24 +691,24 @@ cleanup:
* Sets merge_base to the octopus merge base of curr_head, merge_head and * Sets merge_base to the octopus merge base of curr_head, merge_head and
* fork_point. Returns 0 if a merge base is found, 1 otherwise. * fork_point. Returns 0 if a merge base is found, 1 otherwise.
*/ */
static int get_octopus_merge_base(unsigned char *merge_base, static int get_octopus_merge_base(struct object_id *merge_base,
const unsigned char *curr_head, const struct object_id *curr_head,
const unsigned char *merge_head, const unsigned char *merge_head,
const unsigned char *fork_point) const struct object_id *fork_point)
{ {
struct commit_list *revs = NULL, *result; struct commit_list *revs = NULL, *result;
commit_list_insert(lookup_commit_reference(curr_head), &revs); commit_list_insert(lookup_commit_reference(curr_head->hash), &revs);
commit_list_insert(lookup_commit_reference(merge_head), &revs); commit_list_insert(lookup_commit_reference(merge_head), &revs);
if (!is_null_sha1(fork_point)) if (!is_null_oid(fork_point))
commit_list_insert(lookup_commit_reference(fork_point), &revs); commit_list_insert(lookup_commit_reference(fork_point->hash), &revs);
result = reduce_heads(get_octopus_merge_bases(revs)); result = reduce_heads(get_octopus_merge_bases(revs));
free_commit_list(revs); free_commit_list(revs);
if (!result) if (!result)
return 1; return 1;
hashcpy(merge_base, result->item->object.oid.hash); oidcpy(merge_base, &result->item->object.oid);
return 0; return 0;
} }
@ -717,16 +717,16 @@ static int get_octopus_merge_base(unsigned char *merge_base,
* fork point calculated by get_rebase_fork_point(), runs git-rebase with the * fork point calculated by get_rebase_fork_point(), runs git-rebase with the
* appropriate arguments and returns its exit status. * appropriate arguments and returns its exit status.
*/ */
static int run_rebase(const unsigned char *curr_head, static int run_rebase(const struct object_id *curr_head,
const unsigned char *merge_head, const unsigned char *merge_head,
const unsigned char *fork_point) const struct object_id *fork_point)
{ {
int ret; int ret;
unsigned char oct_merge_base[GIT_SHA1_RAWSZ]; struct object_id oct_merge_base;
struct argv_array args = ARGV_ARRAY_INIT; struct argv_array args = ARGV_ARRAY_INIT;
if (!get_octopus_merge_base(oct_merge_base, curr_head, merge_head, fork_point)) if (!get_octopus_merge_base(&oct_merge_base, curr_head, merge_head, fork_point))
if (!is_null_sha1(fork_point) && !hashcmp(oct_merge_base, fork_point)) if (!is_null_oid(fork_point) && !oidcmp(&oct_merge_base, fork_point))
fork_point = NULL; fork_point = NULL;
argv_array_push(&args, "rebase"); argv_array_push(&args, "rebase");
@ -756,8 +756,8 @@ static int run_rebase(const unsigned char *curr_head,
argv_array_push(&args, "--onto"); argv_array_push(&args, "--onto");
argv_array_push(&args, sha1_to_hex(merge_head)); argv_array_push(&args, sha1_to_hex(merge_head));
if (fork_point && !is_null_sha1(fork_point)) if (fork_point && !is_null_oid(fork_point))
argv_array_push(&args, sha1_to_hex(fork_point)); argv_array_push(&args, oid_to_hex(fork_point));
else else
argv_array_push(&args, sha1_to_hex(merge_head)); argv_array_push(&args, sha1_to_hex(merge_head));
@ -770,8 +770,8 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
{ {
const char *repo, **refspecs; const char *repo, **refspecs;
struct sha1_array merge_heads = SHA1_ARRAY_INIT; struct sha1_array merge_heads = SHA1_ARRAY_INIT;
unsigned char orig_head[GIT_SHA1_RAWSZ], curr_head[GIT_SHA1_RAWSZ]; struct object_id orig_head, curr_head;
unsigned char rebase_fork_point[GIT_SHA1_RAWSZ]; struct object_id rebase_fork_point;
if (!getenv("GIT_REFLOG_ACTION")) if (!getenv("GIT_REFLOG_ACTION"))
set_reflog_message(argc, argv); set_reflog_message(argc, argv);
@ -794,8 +794,8 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
if (file_exists(git_path("MERGE_HEAD"))) if (file_exists(git_path("MERGE_HEAD")))
die_conclude_merge(); die_conclude_merge();
if (get_sha1("HEAD", orig_head)) if (get_oid("HEAD", &orig_head))
hashclr(orig_head); oidclr(&orig_head);
if (!opt_rebase && opt_autostash != -1) if (!opt_rebase && opt_autostash != -1)
die(_("--[no-]autostash option is only valid with --rebase.")); die(_("--[no-]autostash option is only valid with --rebase."));
@ -805,15 +805,15 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
if (opt_autostash != -1) if (opt_autostash != -1)
autostash = opt_autostash; autostash = opt_autostash;
if (is_null_sha1(orig_head) && !is_cache_unborn()) if (is_null_oid(&orig_head) && !is_cache_unborn())
die(_("Updating an unborn branch with changes added to the index.")); die(_("Updating an unborn branch with changes added to the index."));
if (!autostash) if (!autostash)
require_clean_work_tree(N_("pull with rebase"), require_clean_work_tree(N_("pull with rebase"),
_("please commit or stash them."), 1, 0); _("please commit or stash them."), 1, 0);
if (get_rebase_fork_point(rebase_fork_point, repo, *refspecs)) if (get_rebase_fork_point(&rebase_fork_point, repo, *refspecs))
hashclr(rebase_fork_point); oidclr(&rebase_fork_point);
} }
if (run_fetch(repo, refspecs)) if (run_fetch(repo, refspecs))
@ -822,11 +822,11 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
if (opt_dry_run) if (opt_dry_run)
return 0; return 0;
if (get_sha1("HEAD", curr_head)) if (get_oid("HEAD", &curr_head))
hashclr(curr_head); oidclr(&curr_head);
if (!is_null_sha1(orig_head) && !is_null_sha1(curr_head) && if (!is_null_oid(&orig_head) && !is_null_oid(&curr_head) &&
hashcmp(orig_head, curr_head)) { oidcmp(&orig_head, &curr_head)) {
/* /*
* The fetch involved updating the current branch. * The fetch involved updating the current branch.
* *
@ -837,15 +837,15 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
warning(_("fetch updated the current branch head.\n" warning(_("fetch updated the current branch head.\n"
"fast-forwarding your working tree from\n" "fast-forwarding your working tree from\n"
"commit %s."), sha1_to_hex(orig_head)); "commit %s."), oid_to_hex(&orig_head));
if (checkout_fast_forward(orig_head, curr_head, 0)) if (checkout_fast_forward(orig_head.hash, curr_head.hash, 0))
die(_("Cannot fast-forward your working tree.\n" die(_("Cannot fast-forward your working tree.\n"
"After making sure that you saved anything precious from\n" "After making sure that you saved anything precious from\n"
"$ git diff %s\n" "$ git diff %s\n"
"output, run\n" "output, run\n"
"$ git reset --hard\n" "$ git reset --hard\n"
"to recover."), sha1_to_hex(orig_head)); "to recover."), oid_to_hex(&orig_head));
} }
get_merge_heads(&merge_heads); get_merge_heads(&merge_heads);
@ -853,10 +853,10 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
if (!merge_heads.nr) if (!merge_heads.nr)
die_no_merge_candidates(repo, refspecs); die_no_merge_candidates(repo, refspecs);
if (is_null_sha1(orig_head)) { if (is_null_oid(&orig_head)) {
if (merge_heads.nr > 1) if (merge_heads.nr > 1)
die(_("Cannot merge multiple branches into empty head.")); die(_("Cannot merge multiple branches into empty head."));
return pull_into_void(*merge_heads.sha1, curr_head); return pull_into_void(*merge_heads.sha1, &curr_head);
} }
if (opt_rebase && merge_heads.nr > 1) if (opt_rebase && merge_heads.nr > 1)
die(_("Cannot rebase onto multiple branches.")); die(_("Cannot rebase onto multiple branches."));
@ -865,7 +865,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
struct commit_list *list = NULL; struct commit_list *list = NULL;
struct commit *merge_head, *head; struct commit *merge_head, *head;
head = lookup_commit_reference(orig_head); head = lookup_commit_reference(orig_head.hash);
commit_list_insert(head, &list); commit_list_insert(head, &list);
merge_head = lookup_commit_reference(merge_heads.sha1[0]); merge_head = lookup_commit_reference(merge_heads.sha1[0]);
if (is_descendant_of(merge_head, list)) { if (is_descendant_of(merge_head, list)) {
@ -873,7 +873,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
opt_ff = "--ff-only"; opt_ff = "--ff-only";
return run_merge(); return run_merge();
} }
return run_rebase(curr_head, *merge_heads.sha1, rebase_fork_point); return run_rebase(&curr_head, *merge_heads.sha1, &rebase_fork_point);
} else { } else {
return run_merge(); return run_merge();
} }