All callers use oid_to_hex to convert the desired oid to a string before calling submodule_move_head. Defer the conversion to the submodule_move_head as it will turn out to be useful in a bit. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- entry.c | 6 +++--- submodule.c | 12 ++++++------ submodule.h | 2 +- unpack-trees.c | 13 +++++-------- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/entry.c b/entry.c index b5d1d3cf231..4b34dfd30df 100644 --- a/entry.c +++ b/entry.c @@ -358,7 +358,7 @@ static int write_entry(struct cache_entry *ce, sub = submodule_from_ce(ce); if (sub) return submodule_move_head(ce->name, - NULL, oid_to_hex(&ce->oid), + NULL, &ce->oid, state->force ? SUBMODULE_MOVE_HEAD_FORCE : 0); break; @@ -438,10 +438,10 @@ int checkout_entry(struct cache_entry *ce, unlink_or_warn(ce->name); return submodule_move_head(ce->name, - NULL, oid_to_hex(&ce->oid), 0); + NULL, &ce->oid, 0); } else return submodule_move_head(ce->name, - "HEAD", oid_to_hex(&ce->oid), + "HEAD", &ce->oid, state->force ? SUBMODULE_MOVE_HEAD_FORCE : 0); } diff --git a/submodule.c b/submodule.c index 6e14547e9e0..5b4e5227d90 100644 --- a/submodule.c +++ b/submodule.c @@ -1597,9 +1597,9 @@ static void submodule_reset_index(const char *path) * pass NULL for old or new respectively. */ int submodule_move_head(const char *path, - const char *old_head, - const char *new_head, - unsigned flags) + const char *old_head, + const struct object_id *new_oid, + unsigned flags) { int ret = 0; struct child_process cp = CHILD_PROCESS_INIT; @@ -1679,7 +1679,7 @@ int submodule_move_head(const char *path, if (!(flags & SUBMODULE_MOVE_HEAD_FORCE)) argv_array_push(&cp.args, old_head ? old_head : empty_tree_oid_hex()); - argv_array_push(&cp.args, new_head ? new_head : empty_tree_oid_hex()); + argv_array_push(&cp.args, new_oid ? oid_to_hex(new_oid) : empty_tree_oid_hex()); if (run_command(&cp)) { ret = error(_("Submodule '%s' could not be updated."), path); @@ -1687,7 +1687,7 @@ int submodule_move_head(const char *path, } if (!(flags & SUBMODULE_MOVE_HEAD_DRY_RUN)) { - if (new_head) { + if (new_oid) { child_process_init(&cp); /* also set the HEAD accordingly */ cp.git_cmd = 1; @@ -1696,7 +1696,7 @@ int submodule_move_head(const char *path, prepare_submodule_repo_env(&cp.env_array); argv_array_pushl(&cp.args, "update-ref", "HEAD", - "--no-deref", new_head, NULL); + "--no-deref", oid_to_hex(new_oid), NULL); if (run_command(&cp)) { ret = -1; diff --git a/submodule.h b/submodule.h index 4644683e6cb..d1cceabb9b7 100644 --- a/submodule.h +++ b/submodule.h @@ -118,7 +118,7 @@ int submodule_to_gitdir(struct strbuf *buf, const char *submodule); #define SUBMODULE_MOVE_HEAD_FORCE (1<<1) extern int submodule_move_head(const char *path, const char *old, - const char *new_head, + const struct object_id *new_oid, unsigned flags); void submodule_unset_core_worktree(const struct submodule *sub); diff --git a/unpack-trees.c b/unpack-trees.c index f9efee0836a..6c76bd6162a 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -256,7 +256,7 @@ static void display_error_msgs(struct unpack_trees_options *o) static int check_submodule_move_head(const struct cache_entry *ce, const char *old_id, - const char *new_id, + const struct object_id *new_id, struct unpack_trees_options *o) { unsigned flags = SUBMODULE_MOVE_HEAD_DRY_RUN; @@ -1513,7 +1513,7 @@ static int verify_uptodate_1(const struct cache_entry *ce, if (submodule_from_ce(ce)) { int r = check_submodule_move_head(ce, - "HEAD", oid_to_hex(&ce->oid), o); + "HEAD", &ce->oid, o); if (r) return o->gently ? -1 : add_rejected_path(o, error_type, ce->name); @@ -1576,8 +1576,7 @@ static int verify_clean_submodule(const char *old_sha1, if (!submodule_from_ce(ce)) return 0; - return check_submodule_move_head(ce, old_sha1, - oid_to_hex(&ce->oid), o); + return check_submodule_move_head(ce, old_sha1, &ce->oid, o); } static int verify_clean_subdirectory(const struct cache_entry *ce, @@ -1821,8 +1820,7 @@ static int merged_entry(const struct cache_entry *ce, if (submodule_from_ce(ce)) { int ret = check_submodule_move_head(ce, NULL, - oid_to_hex(&ce->oid), - o); + &ce->oid, o); if (ret) return ret; } @@ -1850,8 +1848,7 @@ static int merged_entry(const struct cache_entry *ce, if (submodule_from_ce(ce)) { int ret = check_submodule_move_head(ce, oid_to_hex(&old->oid), - oid_to_hex(&ce->oid), - o); + &ce->oid, o); if (ret) return ret; } -- 2.18.0.597.ga71716f1ad-goog