зеркало из https://github.com/microsoft/git.git
dir: break part of read_directory_recursive() out for reuse
Create an add_path_to_appropriate_result_list() function from the code at the end of read_directory_recursive() so we can use it elsewhere. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
072a231016
Коммит
c5c4eddd56
60
dir.c
60
dir.c
|
@ -1932,6 +1932,40 @@ static void close_cached_dir(struct cached_dir *cdir)
|
|||
}
|
||||
}
|
||||
|
||||
static void add_path_to_appropriate_result_list(struct dir_struct *dir,
|
||||
struct untracked_cache_dir *untracked,
|
||||
struct cached_dir *cdir,
|
||||
struct index_state *istate,
|
||||
struct strbuf *path,
|
||||
int baselen,
|
||||
const struct pathspec *pathspec,
|
||||
enum path_treatment state)
|
||||
{
|
||||
/* add the path to the appropriate result list */
|
||||
switch (state) {
|
||||
case path_excluded:
|
||||
if (dir->flags & DIR_SHOW_IGNORED)
|
||||
dir_add_name(dir, istate, path->buf, path->len);
|
||||
else if ((dir->flags & DIR_SHOW_IGNORED_TOO) ||
|
||||
((dir->flags & DIR_COLLECT_IGNORED) &&
|
||||
exclude_matches_pathspec(path->buf, path->len,
|
||||
pathspec)))
|
||||
dir_add_ignored(dir, istate, path->buf, path->len);
|
||||
break;
|
||||
|
||||
case path_untracked:
|
||||
if (dir->flags & DIR_SHOW_IGNORED)
|
||||
break;
|
||||
dir_add_name(dir, istate, path->buf, path->len);
|
||||
if (cdir->fdir)
|
||||
add_untracked(untracked, path->buf + baselen);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Read a directory tree. We currently ignore anything but
|
||||
* directories, regular files and symlinks. That's because git
|
||||
|
@ -2035,29 +2069,9 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
|
|||
continue;
|
||||
}
|
||||
|
||||
/* add the path to the appropriate result list */
|
||||
switch (state) {
|
||||
case path_excluded:
|
||||
if (dir->flags & DIR_SHOW_IGNORED)
|
||||
dir_add_name(dir, istate, path.buf, path.len);
|
||||
else if ((dir->flags & DIR_SHOW_IGNORED_TOO) ||
|
||||
((dir->flags & DIR_COLLECT_IGNORED) &&
|
||||
exclude_matches_pathspec(path.buf, path.len,
|
||||
pathspec)))
|
||||
dir_add_ignored(dir, istate, path.buf, path.len);
|
||||
break;
|
||||
|
||||
case path_untracked:
|
||||
if (dir->flags & DIR_SHOW_IGNORED)
|
||||
break;
|
||||
dir_add_name(dir, istate, path.buf, path.len);
|
||||
if (cdir.fdir)
|
||||
add_untracked(untracked, path.buf + baselen);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
add_path_to_appropriate_result_list(dir, untracked, &cdir,
|
||||
istate, &path, baselen,
|
||||
pathspec, state);
|
||||
}
|
||||
close_cached_dir(&cdir);
|
||||
out:
|
||||
|
|
Загрузка…
Ссылка в новой задаче