Thread (1 message) 1 message, 1 author, 2019-07-15

Re: What's cooking in git.git (Jul 2019, #03; Fri, 12)

From: Junio C Hamano <hidden>
Date: 2019-07-15 17:25:41

Matthew DeVore [off-list ref] writes:
On Fri, Jul 12, 2019 at 02:02:52PM -0700, Junio C Hamano wrote:
quoted
* md/list-objects-filter-combo (2019-06-28) 10 commits
 - list-objects-filter-options: make parser void
 - list-objects-filter-options: clean up use of ALLOC_GROW
 - list-objects-filter-options: allow mult. --filter
 - strbuf: give URL-encoding API a char predicate fn
 - list-objects-filter-options: make filter_spec a string_list
 - list-objects-filter-options: move error check up
 - list-objects-filter: implement composite filters
 - list-objects-filter-options: always supply *errbuf
 - list-objects-filter: put omits set in filter struct
 - list-objects-filter: encapsulate filter components

 The list-objects-filter API (used to create a sparse/lazy clone)
 learned to take a combined filter specification.

 There is a bit of interaction with cc/multi-promisor topic, whose
 conflict resolution I have no confidence in X-<.  Extra sets of
 eyes are appreciated.
Sorry for the delay. I was on vacation and then catching up for a week after I
got back. I uploaded a merged commit here:

https://github.com/matvore/git/tree/filts

And the merged file itself (only this one had conflicts) is here:

https://github.com/matvore/git/blob/filts/list-objects-filter.c
Thanks.  I fetched the 'filts' branch and found:

 (1) master..filts~1 matches the copy I have above exactly (modulo
     my sign-off and committer identity, of course);

 (2) if I merge cc/multi-promisor on top of filts~1 using the machinery
     I use to rebuild 'pu' every day, I get more-or-less the same result
     as your 'filt' branch (modulo formatting and minor comments).

So it does look like the conflict resolution I have been carrying is
something you would agree on, which is a good news ;-)  Thanks.
I'll comment on the conflicts:
...
md/list-objects-filter-combo changed the contract of this function such that an
attempt to combine filter specs will terminate with BUG rather than return an
error. All the callers already check filter_options.choice, so this is still
fine (it particular, I double-checked partial_clone_get_default_filter_spec and
its call site at builtin/fetch.c:1524)
OK, thanks for being careful.
quoted
  	/*
  	 * Record the initial filter-spec in the config as
  	 * the default for subsequent fetches from this remote.
  	 */
++<<<<<<< md/list-objects-filter-combo
 +	core_partial_clone_filter_default =
 +		xstrdup(expand_list_objects_filter_spec(filter_options));
 +	git_config_set("core.partialclonefilter",
 +		       core_partial_clone_filter_default);
++||||||| merged common ancestors
++	core_partial_clone_filter_default =
++		xstrdup(filter_options->filter_spec);
++	git_config_set("core.partialclonefilter",
++		       core_partial_clone_filter_default);
++=======
+ 	filter_name = xstrfmt("remote.%s.partialclonefilter", remote);
+ 	git_config_set(filter_name, filter_options->filter_spec);
+ 	free(filter_name);
+ 
+ 	/* Make sure the config info are reset */
+ 	promisor_remote_reinit();
++>>>>>>> cc/multi-promisor
  }
  
  void partial_clone_get_default_filter_spec(
md/list-objects-filter-combo used the expand_list_objects_filter_spec function
to expand the filter spec string rather than get it directly. So the merged
result simply applies that alteration to cc/multi-promisor.

I checked whether callers to this function (partial_clone_register) would ever
give a null filter_options (or a non-null with a NULL filter_spec) and both
calls are guarded by "if (filter_options.choice)" so filter_options.filter_spec
should also be set.
Good.  This was the part I was most unsure about.

Thanks.



Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help