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

Re: [RFC/PATCH 5/5] fetch: fix regression with transport helpers

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 4, 2019, 19:17 UTC
Message-ID
<xmqqd0jttb1b.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20190604021330.16130-6-felipe.contreras@gmail.com>
Felipe Contreras <felipe.contreras@gmail.com> writes:
Show 46 quoted lines
> Commit e198b3a740 changed the behavior of fetch with regards to tags.
> Before, null oids where not ignored, now they are, regardless of whether
> the refs have been explicitly cleared or not.
>
>   e198b3a740 (fetch: replace string-list used as a look-up table with a hashmap)
>
> When using a transport helper the oids can certainly be null. So now
> tags are ignored and fetching them is impossible.
>
> This patch fixes that by having a specific flag that is set only when we
> explicitly want to ignore the refs, restoring the original behavior.
>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  builtin/fetch.c           | 5 +++--
>  t/t5801-remote-helpers.sh | 2 +-
>  2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/fetch.c b/builtin/fetch.c
> index 9dc551551e..f2be50a4a3 100644
> --- a/builtin/fetch.c
> +++ b/builtin/fetch.c
> @@ -239,6 +239,7 @@ static int will_fetch(struct ref **head, const unsigned char *sha1)
>  struct refname_hash_entry {
>  	struct hashmap_entry ent; /* must be the first member */
>  	struct object_id oid;
> +	int ignore;
>  	char refname[FLEX_ARRAY];
>  };
>  
> @@ -289,7 +290,7 @@ static int refname_hash_exists(struct hashmap *map, const char *refname)
>  
>  static void clear_item(struct refname_hash_entry *item)
>  {
> -	oidclr(&item->oid);
> +	item->ignore = 1;
>  }
>  
>  static void find_non_local_tags(const struct ref *refs,
> @@ -374,7 +375,7 @@ static void find_non_local_tags(const struct ref *refs,
>  			BUG("unseen remote ref?");
>  
>  		/* Unless we have already decided to ignore this item... */
> -		if (is_null_oid(&item->oid))
> +		if (item->ignore)
>  			continue;

Yeah, we should have added a bit like this to preserve the distinction between a NULL pointer for "struct object_id" and oid that has 0{40} in the old code, which was lost in the conversion.

Thanks for spotting and fixing.
Previous: Jeff KingNext: Felipe Contreras
Message 9 of 18 in “Fix fetch regression with transport helpers”
  1. 0/5 Fix fetch regression with transport helpersFelipe Contreras, Jun 4, 2019
  2. 1/5 t5801 (remote-helpers): cleanup refspec stuffFelipe Contreras, Jun 4, 2019
  3. Jeff KingJun 4, 2019
  4. 2/5 t5801 (remote-helpers): add test to fetch tagsFelipe Contreras, Jun 4, 2019
  5. Jeff KingJun 4, 2019
  6. 3/5 fetch: trivial cleanupFelipe Contreras, Jun 4, 2019
  7. 5/5 fetch: fix regression with transport helpersFelipe Contreras, Jun 4, 2019
  8. Jeff KingJun 4, 2019
  9. Junio C HamanoJun 4, 2019
  10. 4/5 fetch: make the code more understandableFelipe Contreras, Jun 4, 2019
  11. Jeff KingJun 4, 2019
  12. Felipe ContrerasJun 4, 2019
  13. Johannes SchindelinJun 5, 2019
  14. Jeff KingJun 5, 2019
  15. Duy NguyenJun 5, 2019
  16. Johannes SchindelinJun 6, 2019
  17. Junio C HamanoJun 6, 2019
  18. CI builds on GitGitGadget, was Re: [RFC/PATCH 0/5] Fix fetch regression with transport helpersJohannes Schindelin, Jun 7, 2019

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.