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

Re: [PATCH v6 4/8] worktree: simplify find_shared_symref() memory ownership model

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 16, 2021, 05:39 UTC
Message-ID
<xmqq7dd8d5hf.fsf@gitster.g>
In-Reply-To
<20211113033358.2179376-5-andersk@mit.edu>
Anders Kaseorg <andersk@mit.edu> writes:
Show 8 quoted lines
> Storing the worktrees list in a static variable meant that
> find_shared_symref() had to rebuild the list on each call (which is
> inefficient when the call site is in a loop), and also that each call
> invalidated the pointer returned by the previous call (which is
> confusing).
>
> Instead, make it the caller’s responsibility to pass in the worktrees
> list and manage its lifetime.
Very nice.
Show 13 quoted lines
> +	struct worktree **worktrees = get_worktrees();
> +	const struct worktree *worktree =
> +		is_bare_repository() ?
> +			NULL :
> +			find_shared_symref(worktrees, "HEAD", name);
>  
>  	/* only refs/... are allowed */
>  	if (!starts_with(name, "refs/") || check_refname_format(name + 5, 0)) {
>  		rp_error("refusing to create funny ref '%s' remotely", name);
> -		return "funny refname";
> +		ret = "funny refname";
> +		goto out;
>  	}

Nice touch to make the code clean after itself in a single place. Good.

Show 5 quoted lines
> ...
> +out:
> +	free_worktrees(worktrees);
> +	return ret;
>  }
Previous: Anders KaseorgNext: Johannes Schindelin
Message 18 of 21 in “protect branches checked out in all worktrees”
  1. 0/8 protect branches checked out in all worktreesAnders Kaseorg, Nov 13, 2021
  2. 1/8 fetch: lowercase error messagesAnders Kaseorg, Nov 13, 2021
  3. Junio C HamanoNov 16, 2021
  4. Anders KaseorgNov 16, 2021
  5. Junio C HamanoNov 17, 2021
  6. Jiang XinNov 22, 2021
  7. 2/8 receive-pack: lowercase error messagesAnders Kaseorg, Nov 13, 2021
  8. Junio C HamanoNov 18, 2021
  9. 5/8 fetch: protect branches checked out in all worktreesAnders Kaseorg, Nov 13, 2021
  10. Junio C HamanoNov 16, 2021
  11. Anders KaseorgNov 16, 2021
  12. Johannes SchindelinNov 22, 2021
  13. 3/8 branch: lowercase error messagesAnders Kaseorg, Nov 13, 2021
  14. 6/8 receive-pack: clean dead code from update_worktree()Anders Kaseorg, Nov 13, 2021
  15. Junio C HamanoNov 16, 2021
  16. 7/8 receive-pack: protect current branch for bare repository worktreeAnders Kaseorg, Nov 13, 2021
  17. 4/8 worktree: simplify find_shared_symref() memory ownership modelAnders Kaseorg, Nov 13, 2021
  18. Junio C HamanoNov 16, 2021
  19. Johannes SchindelinNov 22, 2021
  20. 8/8 branch: protect branches checked out in all worktreesAnders Kaseorg, Nov 13, 2021
  21. Johannes SchindelinNov 22, 2021

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.