Merge branch 'es/name-hash-no-trailing-slash-in-dirs'
Clean up the internal of the name-hash mechanism used to work around case insensitivity on some filesystems to cleanly fix a long-standing API glitch where the caller of cache_name_exists() that ask about a directory with a counted string was required to have '/' at one location past the end of the string. * es/name-hash-no-trailing-slash-in-dirs: dir: revert work-around for retired dangerous behavior name-hash: stop storing trailing '/' on paths in index_state.dir_hash employ new explicit "exists in index?" API name-hash: refactor polymorphic index_name_exists()
This commit is contained in:
@ -643,7 +643,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
||||
if (*ptr == '/') {
|
||||
struct cache_entry *foundce;
|
||||
++ptr;
|
||||
foundce = index_name_exists(istate, ce->name, ptr - ce->name, ignore_case);
|
||||
foundce = index_dir_exists(istate, ce->name, ptr - ce->name - 1);
|
||||
if (foundce) {
|
||||
memcpy((void *)startPtr, foundce->name + (startPtr - ce->name), ptr - startPtr);
|
||||
startPtr = ptr;
|
||||
@ -652,7 +652,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
||||
}
|
||||
}
|
||||
|
||||
alias = index_name_exists(istate, ce->name, ce_namelen(ce), ignore_case);
|
||||
alias = index_file_exists(istate, ce->name, ce_namelen(ce), ignore_case);
|
||||
if (alias && !ce_stage(alias) && !ie_match_stat(istate, alias, st, ce_option)) {
|
||||
/* Nothing changed, really */
|
||||
free(ce);
|
||||
|
Reference in New Issue
Block a user