ref_remote_duplicates(): extract a function handle_duplicate()
authorMichael Haggerty <mhagger@alum.mit.edu>
Wed, 30 Oct 2013 05:33:10 +0000 (06:33 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 30 Oct 2013 21:16:41 +0000 (14:16 -0700)
It will become more complex in a moment.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c
index f803990760accb3e0d49dcde7c95965e326e6147..4bed101da618e491ebeb31c0a31cd86654afa504 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -745,6 +745,15 @@ int for_each_remote(each_remote_fn fn, void *priv)
        return result;
 }
 
+static void handle_duplicate(struct ref *ref1, struct ref *ref2)
+{
+       if (strcmp(ref1->name, ref2->name))
+               die("%s tracks both %s and %s",
+                   ref2->peer_ref->name, ref1->name, ref2->name);
+       free(ref2->peer_ref);
+       free(ref2);
+}
+
 struct ref *ref_remove_duplicates(struct ref *ref_map)
 {
        struct string_list refs = STRING_LIST_INIT_NODUP;
@@ -766,14 +775,7 @@ struct ref *ref_remove_duplicates(struct ref *ref_map)
 
                        if (item->util) {
                                /* Entry already existed */
-                               if (strcmp(((struct ref *)item->util)->name,
-                                          ref->name))
-                                       die("%s tracks both %s and %s",
-                                           ref->peer_ref->name,
-                                           ((struct ref *)item->util)->name,
-                                           ref->name);
-                               free(ref->peer_ref);
-                               free(ref);
+                               handle_duplicate((struct ref *)item->util, ref);
                        } else {
                                *p = ref;
                                p = &ref->next;