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

Re: [PATCH v4] Add an explicit GIT_DIR to the list of excludes

From
Duy Nguyen <pclouds@gmail.com>
Date
May 28, 2014, 12:36 UTC
Message-ID
<CACsJy8By-58wBoV8BydWbpDkpUG6jJhM16aO+Ed8J2ucq66VcQ@mail.gmail.com>
In-Reply-To
<1401163007-5808-1-git-send-email-pasha.bolokhov@gmail.com>

On Tue, May 27, 2014 at 10:56 AM, Pasha Bolokhov <pasha.bolokhov@gmail.com> wrote:

Show 22 quoted lines
> @@ -1588,6 +1588,38 @@ void setup_standard_excludes(struct dir_struct *dir)
>  {
>         const char *path;
>         char *xdg_path;
> +       const char *r_git, *gitdir = get_git_dir();
> +       char *n_git, *basename;
> +       int len, i;
> +
> +       /*
> +        * Add git directory to the ignores; do this only if
> +        * GIT_DIR does not end with "/.git"
> +        */
> +       r_git = real_path(absolute_path(gitdir));
> +       n_git = xmalloc(strlen(r_git) + 1 + 1);
> +       normalize_path_copy(n_git, r_git);
> +
> +       len = strlen(n_git); /* real_path() has stripped trailing slash */
> +       for (i = len - 1; i > 0 && !is_dir_sep(n_git[i]); i--) ;
> +       basename = n_git + i;
> +       if (is_dir_sep(*basename))
> +               basename++;
> +       if (strcmp(basename, ".git")) {

I think normalize_path_copy makes sure that dir sep is '/', so this code may be simplified to "if (strcmp(n_git, .git") && (len == 4 || strcmp(n_git + len - 5, "/.git")))"?

Show 14 quoted lines
> +               const char *worktree = get_git_work_tree();
> +
> +               if (worktree == NULL ||
> +                   dir_inside_of(n_git, get_git_work_tree()) >= 0) {
> +                       struct exclude_list *el = add_exclude_list(dir, EXC_CMDL,
> +                                                       "GIT_DIR setup");
> +
> +                       /* append a trailing slash to exclude directories */
> +                       n_git[len] = '/';
> +                       n_git[len + 1] = '\0';
> +                       add_exclude(basename, "", 0, el, 0);
> +               }
> +       }
> +       free(n_git);

All this add-only code makes me think it may be nice to make it a separate function. A good function name could replace the comment near the beginning of the block.

-- 
Duy
Previous: Pasha BolokhovNext: Pasha Bolokhov
Message 2 of 6 in “Add an explicit GIT_DIR to the list of excludes”
  1. Add an explicit GIT_DIR to the list of excludesPasha Bolokhov, May 27, 2014
  2. Duy NguyenMay 28, 2014
  3. Pasha BolokhovMay 28, 2014
  4. Duy NguyenMay 29, 2014
  5. Pasha BolokhovJun 3, 2014
  6. Duy NguyenJun 4, 2014

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.