mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-09 20:29:27 +00:00
Merge pull request #1380 from phkelley/index_icase
Disable ignore_case when writing the index to a tree
This commit is contained in:
commit
b8daa9e0fc
@ -242,8 +242,10 @@ static unsigned int index_merge_mode(
|
|||||||
return index_create_mode(mode);
|
return index_create_mode(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void index_set_ignore_case(git_index *index, bool ignore_case)
|
void git_index__set_ignore_case(git_index *index, bool ignore_case)
|
||||||
{
|
{
|
||||||
|
index->ignore_case = ignore_case;
|
||||||
|
|
||||||
index->entries._cmp = ignore_case ? index_icmp : index_cmp;
|
index->entries._cmp = ignore_case ? index_icmp : index_cmp;
|
||||||
index->entries_cmp_path = ignore_case ? index_icmp_path : index_cmp_path;
|
index->entries_cmp_path = ignore_case ? index_icmp_path : index_cmp_path;
|
||||||
index->entries_search = ignore_case ? index_isrch : index_srch;
|
index->entries_search = ignore_case ? index_isrch : index_srch;
|
||||||
@ -372,7 +374,7 @@ int git_index_set_caps(git_index *index, unsigned int caps)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (old_ignore_case != index->ignore_case) {
|
if (old_ignore_case != index->ignore_case) {
|
||||||
index_set_ignore_case(index, index->ignore_case);
|
git_index__set_ignore_case(index, index->ignore_case);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -48,6 +48,8 @@ extern size_t git_index__prefix_position(git_index *index, const char *path);
|
|||||||
extern int git_index_entry__cmp(const void *a, const void *b);
|
extern int git_index_entry__cmp(const void *a, const void *b);
|
||||||
extern int git_index_entry__cmp_icase(const void *a, const void *b);
|
extern int git_index_entry__cmp_icase(const void *a, const void *b);
|
||||||
|
|
||||||
|
extern void git_index__set_ignore_case(git_index *index, bool ignore_case);
|
||||||
|
|
||||||
extern int git_index_read_tree_match(
|
extern int git_index_read_tree_match(
|
||||||
git_index *index, git_tree *tree, git_strarray *strspec);
|
git_index *index, git_tree *tree, git_strarray *strspec);
|
||||||
|
|
||||||
|
16
src/tree.c
16
src/tree.c
@ -566,6 +566,7 @@ int git_tree__write_index(
|
|||||||
git_oid *oid, git_index *index, git_repository *repo)
|
git_oid *oid, git_index *index, git_repository *repo)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
bool old_ignore_case = false;
|
||||||
|
|
||||||
assert(oid && index && repo);
|
assert(oid && index && repo);
|
||||||
|
|
||||||
@ -580,8 +581,21 @@ int git_tree__write_index(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The tree cache didn't help us */
|
/* The tree cache didn't help us; we'll have to write
|
||||||
|
* out a tree. If the index is ignore_case, we must
|
||||||
|
* make it case-sensitive for the duration of the tree-write
|
||||||
|
* operation. */
|
||||||
|
|
||||||
|
if (index->ignore_case) {
|
||||||
|
old_ignore_case = true;
|
||||||
|
git_index__set_ignore_case(index, false);
|
||||||
|
}
|
||||||
|
|
||||||
ret = write_tree(oid, repo, index, "", 0);
|
ret = write_tree(oid, repo, index, "", 0);
|
||||||
|
|
||||||
|
if (old_ignore_case)
|
||||||
|
git_index__set_ignore_case(index, true);
|
||||||
|
|
||||||
return ret < 0 ? ret : 0;
|
return ret < 0 ? ret : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user