refspec: relocate apply_refspecs and related funtions
Move the functions `apply_refspecs()` and `apply_negative_refspecs()` from `remote.c` to `refspec.c`. These functions focus on applying refspecs, so centralizing them in `refspec.c` improves code organization by keeping refspec-related logic in one place. Signed-off-by: Meet Soni <meetsoni3017@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
7b24a170d2
commit
d549b6c9ff
32
refspec.c
32
refspec.c
|
@ -9,6 +9,7 @@
|
|||
#include "strvec.h"
|
||||
#include "refs.h"
|
||||
#include "refspec.h"
|
||||
#include "remote.h"
|
||||
#include "strbuf.h"
|
||||
|
||||
/*
|
||||
|
@ -447,3 +448,34 @@ int refspec_find_match(struct refspec *rs, struct refspec_item *query)
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspec *rs)
|
||||
{
|
||||
struct ref **tail;
|
||||
|
||||
for (tail = &ref_map; *tail; ) {
|
||||
struct ref *ref = *tail;
|
||||
|
||||
if (refname_matches_negative_refspec_item(ref->name, rs)) {
|
||||
*tail = ref->next;
|
||||
free(ref->peer_ref);
|
||||
free(ref);
|
||||
} else
|
||||
tail = &ref->next;
|
||||
}
|
||||
|
||||
return ref_map;
|
||||
}
|
||||
|
||||
char *apply_refspecs(struct refspec *rs, const char *name)
|
||||
{
|
||||
struct refspec_item query;
|
||||
|
||||
memset(&query, 0, sizeof(struct refspec_item));
|
||||
query.src = (char *)name;
|
||||
|
||||
if (refspec_find_match(rs, &query))
|
||||
return NULL;
|
||||
|
||||
return query.dst;
|
||||
}
|
||||
|
|
12
refspec.h
12
refspec.h
|
@ -96,4 +96,16 @@ 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 */
|
||||
|
|
31
remote.c
31
remote.c
|
@ -907,37 +907,6 @@ void ref_push_report_free(struct ref_push_report *report)
|
|||
}
|
||||
}
|
||||
|
||||
struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspec *rs)
|
||||
{
|
||||
struct ref **tail;
|
||||
|
||||
for (tail = &ref_map; *tail; ) {
|
||||
struct ref *ref = *tail;
|
||||
|
||||
if (refname_matches_negative_refspec_item(ref->name, rs)) {
|
||||
*tail = ref->next;
|
||||
free(ref->peer_ref);
|
||||
free(ref);
|
||||
} else
|
||||
tail = &ref->next;
|
||||
}
|
||||
|
||||
return ref_map;
|
||||
}
|
||||
|
||||
char *apply_refspecs(struct refspec *rs, const char *name)
|
||||
{
|
||||
struct refspec_item query;
|
||||
|
||||
memset(&query, 0, sizeof(struct refspec_item));
|
||||
query.src = (char *)name;
|
||||
|
||||
if (refspec_find_match(rs, &query))
|
||||
return NULL;
|
||||
|
||||
return query.dst;
|
||||
}
|
||||
|
||||
int remote_find_tracking(struct remote *remote, struct refspec_item *refspec)
|
||||
{
|
||||
return refspec_find_match(&remote->fetch, refspec);
|
||||
|
|
11
remote.h
11
remote.h
|
@ -261,17 +261,6 @@ int resolve_remote_symref(struct ref *ref, struct ref *list);
|
|||
*/
|
||||
struct ref *ref_remove_duplicates(struct ref *ref_map);
|
||||
|
||||
int refname_matches_negative_refspec_item(const char *refname, struct refspec *rs);
|
||||
|
||||
/*
|
||||
* 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);
|
||||
|
||||
int refspec_find_match(struct refspec *rs, struct refspec_item *query);
|
||||
char *apply_refspecs(struct refspec *rs, const char *name);
|
||||
|
||||
int check_push_refs(struct ref *src, struct refspec *rs);
|
||||
int match_push_refs(struct ref *src, struct ref **dst,
|
||||
struct refspec *rs, int flags);
|
||||
|
|
Loading…
Reference in New Issue