Browse Source

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>
maint
Michael Haggerty 11 years ago committed by Junio C Hamano
parent
commit
54457fe509
  1. 9
      cache.h
  2. 6
      refs.c
  3. 8
      remote.c

9
cache.h

@ -887,9 +887,12 @@ extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref); @@ -887,9 +887,12 @@ extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);
extern int interpret_branch_name(const char *str, int len, struct strbuf *);
extern int get_sha1_mb(const char *str, unsigned char *sha1);

extern int refname_match(const char *abbrev_name, const char *full_name, const char **rules);
extern const char *ref_rev_parse_rules[];
#define ref_fetch_rules ref_rev_parse_rules
/*
* Return true iff abbrev_name is a possible abbreviation for
* full_name according to the rules defined by ref_rev_parse_rules in
* refs.c.
*/
extern int refname_match(const char *abbrev_name, const char *full_name);

extern int create_symref(const char *ref, const char *refs_heads_master, const char *logmsg);
extern int validate_headref(const char *ref);

6
refs.c

@ -1880,7 +1880,7 @@ const char *prettify_refname(const char *name) @@ -1880,7 +1880,7 @@ const char *prettify_refname(const char *name)
0);
}

const char *ref_rev_parse_rules[] = {
static const char *ref_rev_parse_rules[] = {
"%.*s",
"refs/%.*s",
"refs/tags/%.*s",
@ -1890,12 +1890,12 @@ const char *ref_rev_parse_rules[] = { @@ -1890,12 +1890,12 @@ const char *ref_rev_parse_rules[] = {
NULL
};

int refname_match(const char *abbrev_name, const char *full_name, const char **rules)
int refname_match(const char *abbrev_name, const char *full_name)
{
const char **p;
const int abbrev_name_len = strlen(abbrev_name);

for (p = rules; *p; p++) {
for (p = ref_rev_parse_rules; *p; p++) {
if (!strcmp(full_name, mkpath(*p, abbrev_name_len, abbrev_name))) {
return 1;
}

8
remote.c

@ -969,7 +969,7 @@ static int count_refspec_match(const char *pattern, @@ -969,7 +969,7 @@ static int count_refspec_match(const char *pattern,
char *name = refs->name;
int namelen = strlen(name);

if (!refname_match(pattern, name, ref_rev_parse_rules))
if (!refname_match(pattern, name))
continue;

/* A match is "weak" if it is with refs outside
@ -1540,7 +1540,7 @@ int branch_merge_matches(struct branch *branch, @@ -1540,7 +1540,7 @@ int branch_merge_matches(struct branch *branch,
{
if (!branch || i < 0 || i >= branch->merge_nr)
return 0;
return refname_match(branch->merge[i]->src, refname, ref_fetch_rules);
return refname_match(branch->merge[i]->src, refname);
}

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,7 +1586,7 @@ static const struct ref *find_ref_by_name_abbrev(const struct ref *refs, const c
{
const struct ref *ref;
for (ref = refs; ref; ref = ref->next) {
if (refname_match(name, ref->name, ref_fetch_rules))
if (refname_match(name, ref->name))
return ref;
}
return NULL;
@ -2083,7 +2083,7 @@ static void apply_cas(struct push_cas_option *cas, @@ -2083,7 +2083,7 @@ static void apply_cas(struct push_cas_option *cas,
/* Find an explicit --<option>=<name>[:<value>] entry */
for (i = 0; i < cas->nr; i++) {
struct push_cas *entry = &cas->entry[i];
if (!refname_match(entry->refname, ref->name, ref_rev_parse_rules))
if (!refname_match(entry->refname, ref->name))
continue;
ref->expect_old_sha1 = 1;
if (!entry->use_tracking)

Loading…
Cancel
Save