aboutsummaryrefslogtreecommitdiffstats
path: root/refspec.h
diff options
context:
space:
mode:
Diffstat (limited to 'refspec.h')
-rw-r--r--refspec.h55
1 files changed, 44 insertions, 11 deletions
diff --git a/refspec.h b/refspec.h
index 69d693c87d..8b04f9995e 100644
--- a/refspec.h
+++ b/refspec.h
@@ -30,11 +30,10 @@ struct refspec_item {
char *raw;
};
-#define REFSPEC_FETCH 1
-#define REFSPEC_PUSH 0
+struct string_list;
-#define REFSPEC_INIT_FETCH { .fetch = REFSPEC_FETCH }
-#define REFSPEC_INIT_PUSH { .fetch = REFSPEC_PUSH }
+#define REFSPEC_INIT_FETCH { .fetch = 1 }
+#define REFSPEC_INIT_PUSH { .fetch = 0 }
/**
* An array of strings can be parsed into a struct refspec using
@@ -45,15 +44,14 @@ struct refspec {
int alloc;
int nr;
- int fetch;
+ unsigned fetch : 1;
};
-int refspec_item_init(struct refspec_item *item, const char *refspec,
- int fetch);
-void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,
- int fetch);
+int refspec_item_init_fetch(struct refspec_item *item, const char *refspec);
+int refspec_item_init_push(struct refspec_item *item, const char *refspec);
void refspec_item_clear(struct refspec_item *item);
-void refspec_init(struct refspec *rs, int fetch);
+void refspec_init_fetch(struct refspec *rs);
+void refspec_init_push(struct refspec *rs);
void refspec_append(struct refspec *rs, const char *refspec);
__attribute__((format (printf,2,3)))
void refspec_appendf(struct refspec *rs, const char *fmt, ...);
@@ -61,7 +59,6 @@ void refspec_appendn(struct refspec *rs, const char **refspecs, int nr);
void refspec_clear(struct refspec *rs);
int valid_fetch_refspec(const char *refspec);
-int valid_remote_name(const char *name);
struct strvec;
/*
@@ -71,4 +68,40 @@ struct strvec;
void refspec_ref_prefixes(const struct refspec *rs,
struct strvec *ref_prefixes);
+int refname_matches_negative_refspec_item(const char *refname, struct refspec *rs);
+
+/*
+ * Checks if a refname matches a globbing refspec pattern.
+ * If replacement is provided, computes the corresponding mapped refname.
+ * Returns 1 if refname matches pattern, 0 otherwise.
+ */
+int match_refname_with_pattern(const char *pattern, const char *refname,
+ const char *replacement, char **result);
+
+/*
+ * Queries a refspec for a match and updates the query item.
+ * Returns 0 on success, -1 if no match is found or negative refspec matches.
+ */
+int refspec_find_match(struct refspec *rs, struct refspec_item *query);
+
+/*
+ * Queries a refspec for all matches and appends results to the provided string
+ * list.
+ */
+void refspec_find_all_matches(struct refspec *rs,
+ struct refspec_item *query,
+ struct string_list *results);
+
+/*
+ * Remove all entries in the input list which match any negative refspec in
+ * the refspec list.
+ */
+struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspec *rs);
+
+/*
+ * Search for a refspec that matches the given name and return the
+ * corresponding destination (dst) if a match is found, NULL otherwise.
+ */
+char *apply_refspecs(struct refspec *rs, const char *name);
+
#endif /* REFSPEC_H */