Merge branch 'bw/ref-prefix-for-configured-refspec'
"git fetch $there $refspec" that talks over protocol v2 can take advantage of server-side ref filtering; the code has been extended so that this mechanism triggers also when fetching with configured refspec. * bw/ref-prefix-for-configured-refspec: (38 commits) fetch: generate ref-prefixes when using a configured refspec refspec: consolidate ref-prefix generation logic submodule: convert push_unpushed_submodules to take a struct refspec remote: convert check_push_refs to take a struct refspec remote: convert match_push_refs to take a struct refspec http-push: store refspecs in a struct refspec transport: remove transport_verify_remote_names send-pack: store refspecs in a struct refspec transport: convert transport_push to take a struct refspec push: convert to use struct refspec push: check for errors earlier remote: convert match_explicit_refs to take a struct refspec remote: convert get_ref_match to take a struct refspec remote: convert query_refspecs to take a struct refspec remote: convert apply_refspecs to take a struct refspec remote: convert get_stale_heads to take a struct refspec fetch: convert prune_refs to take a struct refspec fetch: convert get_ref_map to take a struct refspec fetch: convert do_fetch to take a struct refspec refspec: remove the deprecated functions ...
This commit is contained in:
@ -14,6 +14,7 @@
|
||||
#include "parse-options.h"
|
||||
#include "fetch-pack.h"
|
||||
#include "refs.h"
|
||||
#include "refspec.h"
|
||||
#include "tree.h"
|
||||
#include "tree-walk.h"
|
||||
#include "unpack-trees.h"
|
||||
@ -546,7 +547,7 @@ static struct ref *find_remote_branch(const struct ref *refs, const char *branch
|
||||
}
|
||||
|
||||
static struct ref *wanted_peer_refs(const struct ref *refs,
|
||||
struct refspec *refspec)
|
||||
struct refspec_item *refspec)
|
||||
{
|
||||
struct ref *head = copy_ref(find_ref_by_name(refs, "HEAD"));
|
||||
struct ref *local_refs = head;
|
||||
@ -894,8 +895,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
int err = 0, complete_refs_before_fetch = 1;
|
||||
int submodule_progress;
|
||||
|
||||
struct refspec *refspec;
|
||||
const char *fetch_pattern;
|
||||
struct refspec_item refspec;
|
||||
|
||||
fetch_if_missing = 0;
|
||||
|
||||
@ -1077,8 +1077,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
if (option_required_reference.nr || option_optional_reference.nr)
|
||||
setup_reference();
|
||||
|
||||
fetch_pattern = value.buf;
|
||||
refspec = parse_fetch_refspec(1, &fetch_pattern);
|
||||
refspec_item_init(&refspec, value.buf, REFSPEC_FETCH);
|
||||
|
||||
strbuf_reset(&value);
|
||||
|
||||
@ -1138,7 +1137,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
refs = transport_get_remote_refs(transport, NULL);
|
||||
|
||||
if (refs) {
|
||||
mapped_refs = wanted_peer_refs(refs, refspec);
|
||||
mapped_refs = wanted_peer_refs(refs, &refspec);
|
||||
/*
|
||||
* transport_get_remote_refs() may return refs with null sha-1
|
||||
* in mapped_refs (see struct transport->get_refs_list
|
||||
@ -1232,6 +1231,6 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
strbuf_release(&value);
|
||||
junk_mode = JUNK_LEAVE_ALL;
|
||||
|
||||
free(refspec);
|
||||
refspec_item_clear(&refspec);
|
||||
return err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user