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>
This commit is contained in:

committed by
Junio C Hamano

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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user