dir: consolidate similar code in treat_directory()
Both the DIR_SKIP_NESTED_GIT and DIR_NO_GITLINKS cases were checking for whether a path was actually a nonbare repository. That code could be shared, with just the result of how to act differing between the two cases. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
777b420347
commit
c847dfafee
18
dir.c
18
dir.c
@ -1461,6 +1461,8 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
|
|||||||
const char *dirname, int len, int baselen, int exclude,
|
const char *dirname, int len, int baselen, int exclude,
|
||||||
const struct pathspec *pathspec)
|
const struct pathspec *pathspec)
|
||||||
{
|
{
|
||||||
|
int nested_repo = 0;
|
||||||
|
|
||||||
/* The "len-1" is to strip the final '/' */
|
/* The "len-1" is to strip the final '/' */
|
||||||
switch (directory_exists_in_index(istate, dirname, len-1)) {
|
switch (directory_exists_in_index(istate, dirname, len-1)) {
|
||||||
case index_directory:
|
case index_directory:
|
||||||
@ -1470,15 +1472,16 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
|
|||||||
return path_none;
|
return path_none;
|
||||||
|
|
||||||
case index_nonexistent:
|
case index_nonexistent:
|
||||||
if (dir->flags & DIR_SKIP_NESTED_GIT) {
|
if ((dir->flags & DIR_SKIP_NESTED_GIT) ||
|
||||||
int nested_repo;
|
!(dir->flags & DIR_NO_GITLINKS)) {
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
strbuf_addstr(&sb, dirname);
|
strbuf_addstr(&sb, dirname);
|
||||||
nested_repo = is_nonbare_repository_dir(&sb);
|
nested_repo = is_nonbare_repository_dir(&sb);
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
if (nested_repo)
|
|
||||||
return path_none;
|
|
||||||
}
|
}
|
||||||
|
if (nested_repo)
|
||||||
|
return ((dir->flags & DIR_SKIP_NESTED_GIT) ? path_none :
|
||||||
|
(exclude ? path_excluded : path_untracked));
|
||||||
|
|
||||||
if (dir->flags & DIR_SHOW_OTHER_DIRECTORIES)
|
if (dir->flags & DIR_SHOW_OTHER_DIRECTORIES)
|
||||||
break;
|
break;
|
||||||
@ -1506,13 +1509,6 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
|
|||||||
|
|
||||||
return path_none;
|
return path_none;
|
||||||
}
|
}
|
||||||
if (!(dir->flags & DIR_NO_GITLINKS)) {
|
|
||||||
struct strbuf sb = STRBUF_INIT;
|
|
||||||
strbuf_addstr(&sb, dirname);
|
|
||||||
if (is_nonbare_repository_dir(&sb))
|
|
||||||
return exclude ? path_excluded : path_untracked;
|
|
||||||
strbuf_release(&sb);
|
|
||||||
}
|
|
||||||
return path_recurse;
|
return path_recurse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user