move duplicated get_local_heads() to remote.c
get_local_heads() appears to have been copied from builtin-send-pack.c to http-push.c via cut and paste. This patch moves the function and its helper one_local_ref() to remote.c. The two copies of one_local_ref() were not identical. I used the more recent version from builtin-send-pack.c after confirming with Jeff King that it was an oversight that commit 30affa1e did not update both copies. This is in preparation for being able to call it from builtin-remote.c Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5483f79998
commit
454e2025a9
@ -133,33 +133,8 @@ static int ref_newer(const unsigned char *new_sha1,
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ref *local_refs, **local_tail;
|
|
||||||
static struct ref *remote_refs, **remote_tail;
|
static struct ref *remote_refs, **remote_tail;
|
||||||
|
|
||||||
static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
|
||||||
{
|
|
||||||
struct ref *ref;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
/* we already know it starts with refs/ to get here */
|
|
||||||
if (check_ref_format(refname + 5))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
len = strlen(refname) + 1;
|
|
||||||
ref = xcalloc(1, sizeof(*ref) + len);
|
|
||||||
hashcpy(ref->new_sha1, sha1);
|
|
||||||
memcpy(ref->name, refname, len);
|
|
||||||
*local_tail = ref;
|
|
||||||
local_tail = &ref->next;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void get_local_heads(void)
|
|
||||||
{
|
|
||||||
local_tail = &local_refs;
|
|
||||||
for_each_ref(one_local_ref, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int receive_status(int in, struct ref *refs)
|
static int receive_status(int in, struct ref *refs)
|
||||||
{
|
{
|
||||||
struct ref *hint;
|
struct ref *hint;
|
||||||
@ -387,7 +362,7 @@ static int refs_pushed(struct ref *ref)
|
|||||||
|
|
||||||
static int do_send_pack(int in, int out, struct remote *remote, const char *dest, int nr_refspec, const char **refspec)
|
static int do_send_pack(int in, int out, struct remote *remote, const char *dest, int nr_refspec, const char **refspec)
|
||||||
{
|
{
|
||||||
struct ref *ref;
|
struct ref *ref, *local_refs;
|
||||||
int new_refs;
|
int new_refs;
|
||||||
int ask_for_status_report = 0;
|
int ask_for_status_report = 0;
|
||||||
int allow_deleting_refs = 0;
|
int allow_deleting_refs = 0;
|
||||||
@ -405,7 +380,7 @@ static int do_send_pack(int in, int out, struct remote *remote, const char *dest
|
|||||||
/* No funny business with the matcher */
|
/* No funny business with the matcher */
|
||||||
remote_tail = get_remote_heads(in, &remote_refs, 0, NULL, REF_NORMAL,
|
remote_tail = get_remote_heads(in, &remote_refs, 0, NULL, REF_NORMAL,
|
||||||
&extra_have);
|
&extra_have);
|
||||||
get_local_heads();
|
local_refs = get_local_heads();
|
||||||
|
|
||||||
/* Does the other end support the reporting? */
|
/* Does the other end support the reporting? */
|
||||||
if (server_supports("report-status"))
|
if (server_supports("report-status"))
|
||||||
|
23
http-push.c
23
http-push.c
@ -1792,21 +1792,8 @@ static int update_remote(unsigned char *sha1, struct remote_lock *lock)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ref *local_refs, **local_tail;
|
|
||||||
static struct ref *remote_refs, **remote_tail;
|
static struct ref *remote_refs, **remote_tail;
|
||||||
|
|
||||||
static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
|
||||||
{
|
|
||||||
struct ref *ref;
|
|
||||||
int len = strlen(refname) + 1;
|
|
||||||
ref = xcalloc(1, sizeof(*ref) + len);
|
|
||||||
hashcpy(ref->new_sha1, sha1);
|
|
||||||
memcpy(ref->name, refname, len);
|
|
||||||
*local_tail = ref;
|
|
||||||
local_tail = &ref->next;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void one_remote_ref(char *refname)
|
static void one_remote_ref(char *refname)
|
||||||
{
|
{
|
||||||
struct ref *ref;
|
struct ref *ref;
|
||||||
@ -1839,12 +1826,6 @@ static void one_remote_ref(char *refname)
|
|||||||
remote_tail = &ref->next;
|
remote_tail = &ref->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_local_heads(void)
|
|
||||||
{
|
|
||||||
local_tail = &local_refs;
|
|
||||||
for_each_ref(one_local_ref, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void get_dav_remote_heads(void)
|
static void get_dav_remote_heads(void)
|
||||||
{
|
{
|
||||||
remote_tail = &remote_refs;
|
remote_tail = &remote_refs;
|
||||||
@ -2195,7 +2176,7 @@ int main(int argc, char **argv)
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
int i;
|
int i;
|
||||||
int new_refs;
|
int new_refs;
|
||||||
struct ref *ref;
|
struct ref *ref, *local_refs;
|
||||||
char *rewritten_url = NULL;
|
char *rewritten_url = NULL;
|
||||||
|
|
||||||
git_extract_argv0_path(argv[0]);
|
git_extract_argv0_path(argv[0]);
|
||||||
@ -2302,7 +2283,7 @@ int main(int argc, char **argv)
|
|||||||
fetch_indices();
|
fetch_indices();
|
||||||
|
|
||||||
/* Get a list of all local and remote heads to validate refspecs */
|
/* Get a list of all local and remote heads to validate refspecs */
|
||||||
get_local_heads();
|
local_refs = get_local_heads();
|
||||||
fprintf(stderr, "Fetching remote heads...\n");
|
fprintf(stderr, "Fetching remote heads...\n");
|
||||||
get_dav_remote_heads();
|
get_dav_remote_heads();
|
||||||
|
|
||||||
|
26
remote.c
26
remote.c
@ -1376,3 +1376,29 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb)
|
|||||||
base, num_ours, num_theirs);
|
base, num_ours, num_theirs);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
||||||
|
{
|
||||||
|
struct ref ***local_tail = cb_data;
|
||||||
|
struct ref *ref;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
/* we already know it starts with refs/ to get here */
|
||||||
|
if (check_ref_format(refname + 5))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
len = strlen(refname) + 1;
|
||||||
|
ref = xcalloc(1, sizeof(*ref) + len);
|
||||||
|
hashcpy(ref->new_sha1, sha1);
|
||||||
|
memcpy(ref->name, refname, len);
|
||||||
|
**local_tail = ref;
|
||||||
|
*local_tail = &ref->next;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ref *get_local_heads(void)
|
||||||
|
{
|
||||||
|
struct ref *local_refs, **local_tail = &local_refs;
|
||||||
|
for_each_ref(one_local_ref, &local_tail);
|
||||||
|
return local_refs;
|
||||||
|
}
|
||||||
|
1
remote.h
1
remote.h
@ -137,4 +137,5 @@ enum match_refs_flags {
|
|||||||
int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs);
|
int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs);
|
||||||
int format_tracking_info(struct branch *branch, struct strbuf *sb);
|
int format_tracking_info(struct branch *branch, struct strbuf *sb);
|
||||||
|
|
||||||
|
struct ref *get_local_heads(void);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user