On Tue, May 27, 2014 at 10:56 AM, Pasha Bolokhov
<pasha.bolok...@gmail.com> wrote:
> @@ -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")))"?

> +               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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to