refname_match(): always use the rules in ref_rev_parse_rules

We used to use two separate rules for the normal ref resolution dwimming and dwimming done to decide which remote ref to grab. The third parameter to refname_match() selected which rules to use. When these two rules were harmonized in 2011-11-04 dd621df9cd refs DWIMmery: use the same rule for both "git fetch" and others , ref_fetch_rules was #defined to avoid potential breakages for in-flight topics. It is now safe to remove the backwards-compatibility code, so remove refname_match()'s third parameter, make ref_rev_parse_rules private to refs.c, and remove ref_fetch_rules entirely. Suggested-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Michael Haggerty committed Jan 14, 2014 at 04:16 UTC 54457fe509ee311abc2c4c2a796d16ea379aa8f2
3 files changed +13 -10
cache.h
+6 -3
@@ -887,9 +887,12 @@ extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);
887 extern int interpret_branch_name(const char *str, int len, struct strbuf *);
888 extern int get_sha1_mb(const char *str, unsigned char *sha1);
889
890 -extern int refname_match(const char *abbrev_name, const char *full_name, const char **rules);
891 -extern const char *ref_rev_parse_rules[];
892 -#define ref_fetch_rules ref_rev_parse_rules
890 +/*
891 + * Return true iff abbrev_name is a possible abbreviation for
892 + * full_name according to the rules defined by ref_rev_parse_rules in
893 + * refs.c.
894 + */
895 +extern int refname_match(const char *abbrev_name, const char *full_name);
896
897 extern int create_symref(const char *ref, const char *refs_heads_master, const char *logmsg);
898 extern int validate_headref(const char *ref);
refs.c
+3 -3
@@ -1880,7 +1880,7 @@ const char *prettify_refname(const char *name)
1880 0);
1881 }
1882
1883 -const char *ref_rev_parse_rules[] = {
1883 +static const char *ref_rev_parse_rules[] = {
1884 "%.*s",
1885 "refs/%.*s",
1886 "refs/tags/%.*s",
@@ -1890,12 +1890,12 @@ const char *ref_rev_parse_rules[] = {
1890 NULL
1891 };
1892
1893 -int refname_match(const char *abbrev_name, const char *full_name, const char **rules)
1893 +int refname_match(const char *abbrev_name, const char *full_name)
1894 {
1895 const char **p;
1896 const int abbrev_name_len = strlen(abbrev_name);
1897
1898 - for (p = rules; *p; p++) {
1898 + for (p = ref_rev_parse_rules; *p; p++) {
1899 if (!strcmp(full_name, mkpath(*p, abbrev_name_len, abbrev_name))) {
1900 return 1;
1901 }
remote.c
+4 -4
@@ -969,7 +969,7 @@ static int count_refspec_match(const char *pattern,
969 char *name = refs->name;
970 int namelen = strlen(name);
971
972 - if (!refname_match(pattern, name, ref_rev_parse_rules))
972 + if (!refname_match(pattern, name))
973 continue;
974
975 /* A match is "weak" if it is with refs outside
@@ -1540,7 +1540,7 @@ int branch_merge_matches(struct branch *branch,
1540 {
1541 if (!branch || i < 0 || i >= branch->merge_nr)
1542 return 0;
1543 - return refname_match(branch->merge[i]->src, refname, ref_fetch_rules);
1543 + return refname_match(branch->merge[i]->src, refname);
1544 }
1545
1546 static int ignore_symref_update(const char *refname)
@@ -1586,7 +1586,7 @@ static const struct ref *find_ref_by_name_abbrev(const struct ref *refs, const c
1586 {
1587 const struct ref *ref;
1588 for (ref = refs; ref; ref = ref->next) {
1589 - if (refname_match(name, ref->name, ref_fetch_rules))
1589 + if (refname_match(name, ref->name))
1590 return ref;
1591 }
1592 return NULL;
@@ -2083,7 +2083,7 @@ static void apply_cas(struct push_cas_option *cas,
2083 /* Find an explicit --<option>=<name>[:<value>] entry */
2084 for (i = 0; i < cas->nr; i++) {
2085 struct push_cas *entry = &cas->entry[i];
2086 - if (!refname_match(entry->refname, ref->name, ref_rev_parse_rules))
2086 + if (!refname_match(entry->refname, ref->name))
2087 continue;
2088 ref->expect_old_sha1 = 1;
2089 if (!entry->use_tracking)