Merge branch 'jk/maint-ls-files-other' into maint
* jk/maint-ls-files-other: refactor handling of "other" files in ls-files and status
This commit is contained in:
28
read-cache.c
28
read-cache.c
@ -1485,3 +1485,31 @@ int read_index_unmerged(struct index_state *istate)
|
||||
}
|
||||
return unmerged;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns 1 if the path is an "other" path with respect to
|
||||
* the index; that is, the path is not mentioned in the index at all,
|
||||
* either as a file, a directory with some files in the index,
|
||||
* or as an unmerged entry.
|
||||
*
|
||||
* We helpfully remove a trailing "/" from directories so that
|
||||
* the output of read_directory can be used as-is.
|
||||
*/
|
||||
int index_name_is_other(const struct index_state *istate, const char *name,
|
||||
int namelen)
|
||||
{
|
||||
int pos;
|
||||
if (namelen && name[namelen - 1] == '/')
|
||||
namelen--;
|
||||
pos = index_name_pos(istate, name, namelen);
|
||||
if (0 <= pos)
|
||||
return 0; /* exact match */
|
||||
pos = -pos - 1;
|
||||
if (pos < istate->cache_nr) {
|
||||
struct cache_entry *ce = istate->cache[pos];
|
||||
if (ce_namelen(ce) == namelen &&
|
||||
!memcmp(ce->name, name, namelen))
|
||||
return 0; /* Yup, this one exists unmerged */
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user