git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCHv4 8/8] clone: recursive and reference option triggers submodule alternates

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 12, 2016, 22:32 UTC
Message-ID
<xmqq60r5vcrs.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20160811231405.17318-9-sbeller@google.com>
Stefan Beller <sbeller@google.com> writes:
Show 28 quoted lines
> +int add_possible_reference_from_superproject(
> +		struct alternate_object_database *alt, void *sas_cb)
> +{
> +	struct submodule_alternate_setup *sas = sas_cb;
> +
> + ...
> +	size_t namelen = alt->name - alt->base - 1;
> +	struct strbuf name = STRBUF_INIT;
> +	strbuf_add(&name, alt->base, namelen);
> +
> +	/*
> +	 * If the alternate object store is another repository, try the
> +	 * standard layout with .git/modules/<name>/objects
> +	 */
> +	if (ends_with(name.buf, ".git/objects")) {
> +		char *sm_alternate;
> +		struct strbuf sb = STRBUF_INIT;
> +		struct strbuf err = STRBUF_INIT;
> +		strbuf_add(&sb, name.buf, name.len - strlen("objects"));
> +		/*
> +		 * We need to end the new path with '/' to mark it as a dir,
> +		 * otherwise a submodule name containing '/' will be broken
> +		 * as the last part of a missing submodule reference would
> +		 * be taken as a file name.
> +		 */
> +		strbuf_addf(&sb, "modules/%s/", sas->submodule_name);
> +
> +		sm_alternate = compute_alternate_path(sb.buf, &err);

OK. Thanks to the refactoring in the earlier step, this has become quite straight-forward and robust; this code will always decide if the other directory can be used as an alternate the same way the "git clone" we will call would decide.

Good.
Previous: Stefan BellerNext: Junio C Hamano
Message 14 of 18 in “[PATCHv4 0/6] git clone: Marry --recursive and --reference”
  1. Stefan BellerAug 11, 2016
  2. 1/8 t7408: modernize styleStefan Beller, Aug 11, 2016
  3. 2/8 t7408: merge short tests, factor out testing methodStefan Beller, Aug 11, 2016
  4. 3/8 submodule--helper module-clone: allow multiple referencesStefan Beller, Aug 11, 2016
  5. 4/8 submodule--helper update-clone: allow multiple referencesStefan Beller, Aug 11, 2016
  6. 5/8 clone: factor out checking for an alternate pathStefan Beller, Aug 11, 2016
  7. Junio C HamanoAug 12, 2016
  8. Stefan BellerAug 15, 2016
  9. Junio C HamanoAug 15, 2016
  10. Stefan BellerAug 15, 2016
  11. 7/8 clone: implement optional referencesStefan Beller, Aug 11, 2016
  12. 6/8 clone: clarify option_reference as requiredStefan Beller, Aug 11, 2016
  13. 8/8 clone: recursive and reference option triggers submodule alternatesStefan Beller, Aug 11, 2016
  14. Junio C HamanoAug 12, 2016
  15. Junio C HamanoAug 17, 2016
  16. Stefan BellerAug 17, 2016
  17. Junio C HamanoAug 17, 2016
  18. Stefan BellerAug 17, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.