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

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

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jul 28, 2007, 00:21 UTC
Message-ID
<Pine.LNX.4.64.0707280115370.14781@racer.site>
In-Reply-To
<7vk5sly3h9.fsf@assigned-by-dhcp.cox.net>
Hi,
On Fri, 27 Jul 2007, Junio C Hamano wrote:
Show 40 quoted lines
> 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...
> 
> > 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.

I am somewhat negative on keeping _that_ much backwards compatibility. Scripts which depend on show-cdup being a relative path _will_ be broken by work-tree. Is it worth it to detect those errors late?

Show 10 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.
Actually, you made me think again, and I am more along those lines now:
	return is_bare_repository_cfg >= 0 ?
		is_bare_repository_cfg : !get_git_work_tree();

and according patch to get_git_work_tree to return NULL if is_bare_repository_cfg == 1.

Ciao, Dscho

Previous: Junio C HamanoNext: Junio C Hamano
Message 10 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.