OSDN Git Service

struct nonmatching_ref_data: store a refname instead of a ref_entry
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 11 May 2015 15:25:09 +0000 (17:25 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 May 2015 18:50:18 +0000 (11:50 -0700)
Now that we don't need a ref_entry to pass to
report_refname_conflict(), it is sufficient to store the refname of
the conflicting reference.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
refs.c

diff --git a/refs.c b/refs.c
index 7422594..effd91a 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -843,7 +843,7 @@ static void prime_ref_dir(struct ref_dir *dir)
 
 struct nonmatching_ref_data {
        const struct string_list *skip;
-       struct ref_entry *found;
+       const char *conflicting_refname;
 };
 
 static int nonmatching_ref_fn(struct ref_entry *entry, void *vdata)
@@ -853,7 +853,7 @@ static int nonmatching_ref_fn(struct ref_entry *entry, void *vdata)
        if (data->skip && string_list_has_string(data->skip, entry->name))
                return 0;
 
-       data->found = entry;
+       data->conflicting_refname = entry->name;
        return 1;
 }
 
@@ -963,7 +963,8 @@ static int is_refname_available(const char *refname,
                if (!do_for_each_entry_in_dir(dir, 0, nonmatching_ref_fn, &data))
                        return 1;
 
-               error("'%s' exists; cannot create '%s'", data.found->name, refname);
+               error("'%s' exists; cannot create '%s'",
+                     data.conflicting_refname, refname);
                return 0;
        }