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:
parent
2eb80bcdcc
commit
f9b11147e0
@ -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();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user