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

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

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Aug 1, 2007, 11:46 UTC
Message-ID
<Pine.LNX.4.64.0708011239090.14781@racer.site>
In-Reply-To
<7v3az3deac.fsf@assigned-by-dhcp.cox.net>
Hi,
On Tue, 31 Jul 2007, Junio C Hamano wrote:
Show 16 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > The old version of work-tree support was an unholy mess, barely readable,
> > and not to the point.
> >
> > For example, why do you have to provide a worktree, when it is not used?
> > As in "git status".  Now it works.
> > ...
> 
> Without continuing with negatives, let's try to define the new,
> corrected world order.
> 
> I do not think the following is exactly what your cleaned-up
> version tries to perform, but I am writing this down primarily
> to demonstrate the style and the level of detail I expect to
> accompany a clean-up patch like this.

After reading your description I sink into the ground in shame. I really like the style this has, and agree that something as nice as this should have been there.

>  - is_inside_git_dir(): this returns true if the $cwd is the git
>    directory or its subdirectory. [IS THIS STILL NEEDED???]
Hmmm.
>  - is_inside_work_tree(): this returns true if the $cwd is
>    inside work tree (i.e. either at the toplevel of the work
>    tree or its subdirectory).  [NEEDSHELP: is .git in the usual
>    layout considered "is_inside_work_tree()"?  Should it?]

.git/ is not considered part of the work tree, even if it is _physically_ there.

Show 10 quoted lines
> After writing the above down, it strikes me odd that we do not
> have a predicate that says "we know the work tree is there".
>
> If a command wants a work tree, and if you are outside the work
> tree, then is_inside_work_tree() returns false and
> get_git_work_tree() returns non NULL, so that is a good pair of
> interface that can be mixed and matched (e.g. you can chdir to
> the former to perform the whole tree operation, or refuse to
> perform, based on is_inside_work_tree being false, cwd relative
> operations).

Yes. Builtins which need a working tree expect to start at the toplevel of the work tree (which I like to call "working directory", because it is described as such in the glossary AFAIR), and therefore they chdir() to the toplevel in any case.

I'll be running "master"+worktree+branch-newdir for the remainder of the 1.5.3-rc period, to be sure that all works as intended.

Ciao, Dscho

Previous: Junio C HamanoNext: Junio C Hamano
Message 24 of 30 in “work-tree clean ups”
  1. 0/9 work-tree clean upsJohannes Schindelin, Jul 29, 2007
  2. 1/9 Add is_absolute_path() and make_absolute_path()Johannes Schindelin, Jul 29, 2007
  3. 2/9 Add functions get_relative_cwd() and is_inside_dir()Johannes Schindelin, Jul 29, 2007
  4. 3/9 white space fixes in setup.cJohannes Schindelin, Jul 29, 2007
  5. 4/9 Clean up work-tree handlingJohannes Schindelin, Jul 29, 2007
  6. 5/9 Add set_git_dir() functionJohannes Schindelin, Jul 29, 2007
  7. 6/9 work-trees are allowed inside a git-dirJohannes Schindelin, Jul 29, 2007
  8. 7/9 init: use get_git_work_tree() instead of rolling our ownJohannes Schindelin, Jul 29, 2007
  9. 8/9 Fix t1501 for updated work-tree logicJohannes Schindelin, Jul 29, 2007
  10. 9/9 Fix t1500 for sane work-tree behaviorJohannes Schindelin, Jul 29, 2007
  11. Die if core.bare = true and core.worktree is setJohannes Schindelin, Jul 29, 2007
  12. Johannes SchindelinAug 1, 2007
  13. 1/4 Add is_absolute_path() and make_absolute_path()Johannes Schindelin, Aug 1, 2007
  14. 2/4 Add functions get_relative_cwd() and is_inside_dir()Johannes Schindelin, Aug 1, 2007
  15. Junio C HamanoAug 1, 2007
  16. Junio C HamanoAug 1, 2007
  17. Johannes SchindelinAug 1, 2007
  18. Make get_relative_cwd() not accept NULL for a directoryJohannes Schindelin, Aug 1, 2007
  19. Junio C HamanoAug 1, 2007
  20. get_relative_cwd(): clarify why it handles dir == NULLJohannes Schindelin, Aug 1, 2007
  21. 3/4 Add set_git_dir() functionJohannes Schindelin, Aug 1, 2007
  22. 4/4 Clean up work-tree handlingJohannes Schindelin, Aug 1, 2007
  23. Junio C HamanoAug 1, 2007
  24. Johannes SchindelinAug 1, 2007
  25. Junio C HamanoAug 2, 2007
  26. Junio C HamanoAug 1, 2007
  27. Johannes SchindelinAug 1, 2007
  28. Junio C HamanoAug 1, 2007
  29. Johannes SchindelinAug 1, 2007
  30. Johannes SchindelinAug 1, 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.