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

Re: [PATCH 4/9] Make setup_work_tree() return new prefix

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Feb 28, 2008, 13:02 UTC
Message-ID
<fcaeb9bf0802280502m2cfc967bt792be98d81a2996@mail.gmail.com>
In-Reply-To
<alpine.LSU.1.00.0802281130140.22527@racer.site>

On Thu, Feb 28, 2008 at 6:30 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:

Show 44 quoted lines
> Hi,
>
>
>
>  On Wed, 27 Feb 2008, Nguyễn Thái Ngọc Duy wrote:
>
>  > @@ -336,24 +321,21 @@ const char *setup_git_directory_gently(int *nongit_ok)
>  >                       static char buffer[1024 + 1];
>  >                       const char *retval;
>  >
>  > +                     /*
>  > +                      * The old behaviour (which we retain here) is to set
>  > +                      * the work tree root to the cwd, unless overridden by
>  > +                      * the config, the command line, or GIT_WORK_TREE.
>  > +                      */
>  >                       if (!work_tree_env) {
>  > -                             retval = set_work_tree(gitdirenv);
>  > -                             /* config may override worktree */
>  > -                             if (check_repository_format_gently(nongit_ok))
>  > -                                     return NULL;
>  > -                             return retval;
>  > +                             char buffer[PATH_MAX + 1];
>  > +
>  > +                             if (!getcwd(buffer, sizeof(buffer)))
>  > +                                     die ("Could not get the current working directory");
>  > +                             git_work_tree_cfg = xstrdup(buffer);
>  > +                             inside_work_tree = 1;
>  >                       }
>  > -                     if (check_repository_format_gently(nongit_ok))
>  > -                             return NULL;
>  > -                     retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
>  > -                                     get_git_work_tree());
>  > -                     if (!retval || !*retval)
>  > -                             return NULL;
>  > -                     set_git_dir(make_absolute_path(gitdirenv));
>  > -                     if (chdir(work_tree_env) < 0)
>  > -                             die ("Could not chdir to %s", work_tree_env);
>  > -                     strcat(buffer, "/");
>  > -                     return retval;
>  > +                     check_repository_format_gently(nongit_ok);
>  > +                     return NULL;
>
>  What about the situation where you are in a subdirectory of core.worktree?
>  You return prefix NULL?  That's wrong.

This is an intermediate patch. At the end of the series, you will see that _gently() does not return prefix. I split it for easier review.

>  I am sorry, but with all these intrusive changes, I get a very uneasy
>  feeling.  As uneasy as with the original series, which I tried to fix up,
>  not really succeeding.

In constrast I feel good :) To me setup_git_directory*() at the end look really nice. No chdir() all over the place (temporary chdir() for detecting .git does not count). It also gives a chance to get rid of worktree to commands that do not care about worktree at all.

>  Ciao,
>  Dscho
>
-- 
Duy
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 8 of 24 in “"git read-tree -m" and the like require worktree”
  1. 1/9 "git read-tree -m" and the like require worktreeNguyễn Thái Ngọc Duy, Feb 27, 2008
  2. Junio C HamanoFeb 28, 2008
  3. Nguyen Thai Ngoc DuyFeb 28, 2008
  4. 2/9 Make sure setup_git_directory is called before accessing repositoryNguyễn Thái Ngọc Duy, Feb 27, 2008
  5. 3/9 Make get_git_dir() and 'git rev-parse --git-dir' absolute pathNguyễn Thái Ngọc Duy, Feb 27, 2008
  6. 4/9 Make setup_work_tree() return new prefixNguyễn Thái Ngọc Duy, Feb 27, 2008
  7. Johannes SchindelinFeb 28, 2008
  8. Nguyen Thai Ngoc DuyFeb 28, 2008
  9. Johannes SchindelinFeb 28, 2008
  10. 5/9 http-push: Avoid calling setup_git_directory() twiceNguyễn Thái Ngọc Duy, Feb 27, 2008
  11. Junio C HamanoFeb 28, 2008
  12. Nguyen Thai Ngoc DuyFeb 28, 2008
  13. 6/9 Completely move out worktree setup from setup_git_directory_gently()Nguyễn Thái Ngọc Duy, Feb 27, 2008
  14. Junio C HamanoFeb 28, 2008
  15. Nguyen Thai Ngoc DuyFeb 28, 2008
  16. Junio C HamanoFeb 28, 2008
  17. Nguyen Thai Ngoc DuyFeb 28, 2008
  18. Johannes SchindelinFeb 28, 2008
  19. Nguyen Thai Ngoc DuyFeb 28, 2008
  20. 7/9 builtin-archive: mark unused prefix "unused_prefix"Nguyễn Thái Ngọc Duy, Feb 27, 2008
  21. 8/9 Make setup_git_directory() auto-setup worktree if foundNguyễn Thái Ngọc Duy, Feb 27, 2008
  22. 9/9 Documentation: update api-builtin and api-setupNguyễn Thái Ngọc Duy, Feb 27, 2008
  23. Jonathan NiederApr 5, 2011
  24. Nguyen Thai Ngoc DuyApr 5, 2011

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.