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 <sbel...@google.com>
---
 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

Reply via email to