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

Re: [PATCH 3/3] worktree list: keep the list sorted

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 23, 2016, 17:16 UTC
Message-ID
<xmqqwpfum801.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20161122100046.8341-4-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
Show 9 quoted lines
> +		for (i = nr = 0; worktrees[i]; i++)
> +			nr++;
> +
> +		/*
> +		 * don't sort the first item (main worktree), which will
> +		 * always be the first
> +		 */
> +		QSORT(worktrees + 1, nr - 1, compare_worktree);
> +
This is somewhat curious.
	for (i = 0; worktrees[i]; i++)
		; /* just counting */
	QSORT(worktrees + 1, i - 1, compare_worktree);
would have been a lot more idiomatic (you do not use nr after sorting).

More importantly, perhaps get_worktrees() should learn to take an optional pointer to int that returns how many items are in the list?

Alternatively, other existing callers of the function do not care about the order, so it may not be such a good idea to always sort the result, but it may be a good idea to teach it to take a boolean that signals that the list should be sorted in a "natural order", which is how "worktree list" would show them to the user?

This should be easily protectable with a new test.  Please do.
Previous: Nguyễn Thái Ngọc DuyNext: Duy Nguyen
Message 7 of 19 in “Minor fixes on 'git worktree'”
  1. 0/3 Minor fixes on 'git worktree'Nguyễn Thái Ngọc Duy, Nov 22, 2016
  2. 1/3 worktree.c: zero new 'struct worktree' on allocationNguyễn Thái Ngọc Duy, Nov 22, 2016
  3. Junio C HamanoNov 23, 2016
  4. 2/3 get_worktrees() must return main worktree as first item even on errorNguyễn Thái Ngọc Duy, Nov 22, 2016
  5. Junio C HamanoNov 23, 2016
  6. 3/3 worktree list: keep the list sortedNguyễn Thái Ngọc Duy, Nov 22, 2016
  7. Junio C HamanoNov 23, 2016
  8. Duy NguyenNov 25, 2016
  9. Junio C HamanoNov 23, 2016
  10. Duy NguyenNov 25, 2016
  11. Duy NguyenNov 25, 2016
  12. Junio C HamanoNov 28, 2016
  13. 0/5 nd/worktree-list-fixupNguyễn Thái Ngọc Duy, Nov 28, 2016
  14. 1/5 worktree.c: zero new 'struct worktree' on allocationNguyễn Thái Ngọc Duy, Nov 28, 2016
  15. 2/5 worktree: reorder an if statementNguyễn Thái Ngọc Duy, Nov 28, 2016
  16. 5/5 worktree list: keep the list sortedNguyễn Thái Ngọc Duy, Nov 28, 2016
  17. 3/5 get_worktrees() must return main worktree as first item even on errorNguyễn Thái Ngọc Duy, Nov 28, 2016
  18. 4/5 worktree.c: get_worktrees() takes a new flag argumentNguyễn Thái Ngọc Duy, Nov 28, 2016
  19. Junio C HamanoNov 28, 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.