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:
@ -7,6 +7,7 @@
|
||||
#include "cache.h"
|
||||
#include "config.h"
|
||||
#include "refs.h"
|
||||
#include "refspec.h"
|
||||
#include "commit.h"
|
||||
#include "object.h"
|
||||
#include "tag.h"
|
||||
@ -35,8 +36,7 @@ static int use_done_feature;
|
||||
static int no_data;
|
||||
static int full_tree;
|
||||
static struct string_list extra_refs = STRING_LIST_INIT_NODUP;
|
||||
static struct refspec *refspecs;
|
||||
static int refspecs_nr;
|
||||
static struct refspec refspecs = REFSPEC_INIT_FETCH;
|
||||
static int anonymize;
|
||||
|
||||
static int parse_opt_signed_tag_mode(const struct option *opt,
|
||||
@ -828,9 +828,9 @@ static void get_tags_and_duplicates(struct rev_cmdline_info *info)
|
||||
if (dwim_ref(e->name, strlen(e->name), &oid, &full_name) != 1)
|
||||
continue;
|
||||
|
||||
if (refspecs) {
|
||||
if (refspecs.nr) {
|
||||
char *private;
|
||||
private = apply_refspecs(refspecs, refspecs_nr, full_name);
|
||||
private = apply_refspecs(&refspecs, full_name);
|
||||
if (private) {
|
||||
free(full_name);
|
||||
full_name = private;
|
||||
@ -976,8 +976,8 @@ static void import_marks(char *input_file)
|
||||
static void handle_deletes(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < refspecs_nr; i++) {
|
||||
struct refspec *refspec = &refspecs[i];
|
||||
for (i = 0; i < refspecs.nr; i++) {
|
||||
struct refspec_item *refspec = &refspecs.items[i];
|
||||
if (*refspec->src)
|
||||
continue;
|
||||
|
||||
@ -1038,18 +1038,12 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
|
||||
usage_with_options (fast_export_usage, options);
|
||||
|
||||
if (refspecs_list.nr) {
|
||||
const char **refspecs_str;
|
||||
int i;
|
||||
|
||||
ALLOC_ARRAY(refspecs_str, refspecs_list.nr);
|
||||
for (i = 0; i < refspecs_list.nr; i++)
|
||||
refspecs_str[i] = refspecs_list.items[i].string;
|
||||
|
||||
refspecs_nr = refspecs_list.nr;
|
||||
refspecs = parse_fetch_refspec(refspecs_nr, refspecs_str);
|
||||
refspec_append(&refspecs, refspecs_list.items[i].string);
|
||||
|
||||
string_list_clear(&refspecs_list, 1);
|
||||
free(refspecs_str);
|
||||
}
|
||||
|
||||
if (use_done_feature)
|
||||
@ -1088,7 +1082,7 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
|
||||
if (use_done_feature)
|
||||
printf("done\n");
|
||||
|
||||
free_refspec(refspecs_nr, refspecs);
|
||||
refspec_clear(&refspecs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user