On Tue, May 27, 2014 at 10:56 AM, Pasha Bolokhov
<[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html