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

Re: [PATCH 3/8] Clean up work-tree handling

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 27, 2007, 20:51 UTC
Message-ID
<7vk5sly3h9.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.64.0707271956420.14781@racer.site>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 	Not only because of ohloh am I proud that in spite of removing
> 	more lines than I added, there were more comments added than
> 	removed...
Show 21 quoted lines
> diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c
> index 497903a..3f787a8 100644
> --- a/builtin-rev-parse.c
> +++ b/builtin-rev-parse.c
> @@ -320,15 +320,9 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
>  				continue;
>  			}
>  			if (!strcmp(arg, "--show-cdup")) {
> -				const char *pfx = prefix;
> -				while (pfx) {
> -					pfx = strchr(pfx, '/');
> -					if (pfx) {
> -						pfx++;
> -						printf("../");
> -					}
> -				}
> -				putchar('\n');
> +				const char *work_tree = get_git_work_tree();
> +				if (work_tree)
> +					printf("%s\n", work_tree);
>  				continue;
This changes semantics, I think.

It used to be relative "up" path when no funny work-tree stuff is used, but get_git_work_tree() now seems to return absolute, hence this option as well. If it introduces regression to existing callers is up to what the caller does to the resulting path, though. If it only is used to prefix other things (i.e. path="$(git rev-parse --show-cdup)$1"), the caller would be safe, but if the caller counted number of ../ in the return value to see how deep it is, or if the caller expected to see empty string in order to see if the process is at the toplevel, this change would become a regression.

Show 7 quoted lines
> @@ -62,15 +66,8 @@ static void setup_git_env(void)
>  
>  int is_bare_repository(void)
>  {
> +	/* if core.bare is not 'false', let's see if there is a work tree */
> +	return is_bare_repository_cfg && !get_git_work_tree();
>  }

I thought about making core.bare a tertiary, true/false/depends, but I think this makes more sense.

Previous: Johannes SchindelinNext: Johannes Schindelin
Message 9 of 30 in “work-tree cleanups”
  1. 0/8 work-tree cleanupsJohannes Schindelin, Jul 27, 2007
  2. 1/8 Add is_absolute_path() and make_absolute_path()Johannes Schindelin, Jul 27, 2007
  3. Junio C HamanoJul 27, 2007
  4. Johannes SchindelinJul 28, 2007
  5. 2/8 Add functions get_relative_cwd() and is_inside_dir()Johannes Schindelin, Jul 27, 2007
  6. Junio C HamanoJul 27, 2007
  7. Johannes SchindelinJul 28, 2007
  8. 3/8 Clean up work-tree handlingJohannes Schindelin, Jul 27, 2007
  9. Junio C HamanoJul 27, 2007
  10. Johannes SchindelinJul 28, 2007
  11. Junio C HamanoJul 28, 2007
  12. Johannes SchindelinJul 28, 2007
  13. Junio C HamanoJul 28, 2007
  14. Johannes SchindelinJul 28, 2007
  15. Junio C HamanoJul 28, 2007
  16. Johannes SchindelinJul 28, 2007
  17. Johannes SchindelinJul 29, 2007
  18. Junio C HamanoJul 29, 2007
  19. Johannes SchindelinJul 29, 2007
  20. 4/8 Add set_git_dir() functionJohannes Schindelin, Jul 27, 2007
  21. 5/8 work-trees are allowed inside a git-dirJohannes Schindelin, Jul 27, 2007
  22. Junio C HamanoJul 27, 2007
  23. Johannes SchindelinJul 28, 2007
  24. Junio C HamanoJul 28, 2007
  25. Johannes SchindelinJul 28, 2007
  26. 6/8 init: use get_git_work_tree() instead of rolling our ownJohannes Schindelin, Jul 27, 2007
  27. 7/8 Make t1501 a little saner, and fix itJohannes Schindelin, Jul 27, 2007
  28. 8/8 Fix t1500 for sane work-tree behaviorJohannes Schindelin, Jul 27, 2007
  29. Junio C HamanoJul 27, 2007
  30. Johannes SchindelinJul 28, 2007

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.