Re: [PATCH 04/14] fetch: add object filtering for partial fetch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux