builtin/remote: rewrite functions to take object_id arguments
[gitweb.git] / builtin / remote.c
index 5d3ab906bc7ef6cc8cc9c65a3b86cf4c1ff443fb..f4a6ec9f138bcfe3b2519412fa70c289a0024fb5 100644 (file)
@@ -509,11 +509,10 @@ struct branches_for_remote {
 };
 
 static int add_branch_for_removal(const char *refname,
-       const unsigned char *sha1, int flags, void *cb_data)
+       const struct object_id *oid, int flags, void *cb_data)
 {
        struct branches_for_remote *branches = cb_data;
        struct refspec refspec;
-       struct string_list_item *item;
        struct known_remote *kr;
 
        memset(&refspec, 0, sizeof(refspec));
@@ -543,9 +542,7 @@ static int add_branch_for_removal(const char *refname,
        if (flags & REF_ISSYMREF)
                return unlink(git_path("%s", refname));
 
-       item = string_list_append(branches->branches, refname);
-       item->util = xmalloc(20);
-       hashcpy(item->util, sha1);
+       string_list_append(branches->branches, refname);
 
        return 0;
 }
@@ -557,20 +554,20 @@ struct rename_info {
 };
 
 static int read_remote_branches(const char *refname,
-       const unsigned char *sha1, int flags, void *cb_data)
+       const struct object_id *oid, int flags, void *cb_data)
 {
        struct rename_info *rename = cb_data;
        struct strbuf buf = STRBUF_INIT;
        struct string_list_item *item;
        int flag;
-       unsigned char orig_sha1[20];
+       struct object_id orig_oid;
        const char *symref;
 
        strbuf_addf(&buf, "refs/remotes/%s/", rename->old);
        if (starts_with(refname, buf.buf)) {
                item = string_list_append(rename->remote_branches, xstrdup(refname));
                symref = resolve_ref_unsafe(refname, RESOLVE_REF_READING,
-                                           orig_sha1, &flag);
+                                           orig_oid.hash, &flag);
                if (flag & REF_ISSYMREF)
                        item->util = xstrdup(symref);
                else
@@ -584,7 +581,7 @@ static int migrate_file(struct remote *remote)
 {
        struct strbuf buf = STRBUF_INIT;
        int i;
-       char *path = NULL;
+       const char *path = NULL;
 
        strbuf_addf(&buf, "remote.%s.url", remote->name);
        for (i = 0; i < remote->url_nr; i++)
@@ -704,9 +701,9 @@ static int mv(int argc, const char **argv)
        for (i = 0; i < remote_branches.nr; i++) {
                struct string_list_item *item = remote_branches.items + i;
                int flag = 0;
-               unsigned char sha1[20];
+               struct object_id oid;
 
-               read_ref_full(item->string, RESOLVE_REF_READING, sha1, &flag);
+               read_ref_full(item->string, RESOLVE_REF_READING, oid.hash, &flag);
                if (!(flag & REF_ISSYMREF))
                        continue;
                if (delete_ref(item->string, NULL, REF_NODEREF))
@@ -826,7 +823,7 @@ static int rm(int argc, const char **argv)
 
        if (!result)
                result = remove_branches(&branches);
-       string_list_clear(&branches, 1);
+       string_list_clear(&branches, 0);
 
        if (skipped.nr) {
                fprintf_ln(stderr,
@@ -867,7 +864,7 @@ static void free_remote_ref_states(struct ref_states *states)
 }
 
 static int append_ref_to_tracked_list(const char *refname,
-       const unsigned char *sha1, int flags, void *cb_data)
+       const struct object_id *oid, int flags, void *cb_data)
 {
        struct ref_states *states = cb_data;
        struct refspec refspec;