On 11/3/2017 4:38 PM, Jonathan Tan wrote:
@@ -1242,6 +1249,20 @@ static int fetch_multiple(struct string_list *list)
        int i, result = 0;
        struct argv_array argv = ARGV_ARRAY_INIT;
+ if (filter_options.choice) {
+               /*
+                * We currently only support partial-fetches to the remote
+                * used for the partial-clone because we only support 1
+                * promisor remote, so we DO NOT allow explicit command
+                * line filter arguments.
+                *
+                * Note that the loop below will spawn background fetches
+                * for each remote and one of them MAY INHERIT the proper
+                * partial-fetch settings, so everything is consistent.
+                */
+               die(_("partial-fetch is not supported on multiple remotes"));
+       }
+
        if (!append && !dry_run) {
                int errcode = truncate_fetch_head();
                if (errcode)

My intention in doing the "fetch: refactor calculation of remote list"
patch is so that the interaction between the provided list of remotes
and the specification of the filter can be handled using the following
diff:

     -  if (remote)
     +  if (remote) {
     +          if (filter_options.choice &&
     +              strcmp(remote->name, 
repository_format_partial_clone_remote))
     +                  die(_("--blob-max-bytes can only be used with the remote 
configured in core.partialClone"));
                result = fetch_one(remote, argc, argv);
     -  else
     +  } else {
     +          if (filter_options.choice)
     +                  die(_("--blob-max-bytes can only be used with the remote 
configured in core.partialClone"));
                result = fetch_multiple(&list);
     +  }

(Ignore the "blob-max-bytes" in the error message - that needs to be
updated.)

The GitHub link I provided above has this diff, and it seems to work.


I put the filter_options.choice tests inside the fetch_{one,multiple}
routines because the former needs to be able to register partial clone
with the config and/or inherit the default filter-spec for the
promisor remote and that took more code that what can neatly fit inline
here.  This will be more apparent in my next patch series.

Jeff

Reply via email to