From 6ea999bb88e1c5d0be17d823c23728d11adfed47 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Thu, 13 Jun 2013 15:52:12 -0700 Subject: [PATCH] Make index_insert keep existing case In a case insensitive index, if you attempt to add a file from disk with a different case pattern, the old case pattern in the index should be preserved. This fixes that (and a couple of minor warnings). --- src/index.c | 5 +++-- tests-clar/diff/rename.c | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/index.c b/src/index.c index 4f0c70135..560a257e7 100644 --- a/src/index.c +++ b/src/index.c @@ -734,8 +734,9 @@ static int index_insert(git_index *index, git_index_entry *entry, int replace) if (!replace || !existing) return git_vector_insert(&index->entries, entry); - /* exists, replace it */ - git__free((*existing)->path); + /* exists, replace it (preserving name from existing entry) */ + git__free(entry->path); + entry->path = (*existing)->path; git__free(*existing); *existing = entry; diff --git a/tests-clar/diff/rename.c b/tests-clar/diff/rename.c index 6227a54e8..c4b722314 100644 --- a/tests-clar/diff/rename.c +++ b/tests-clar/diff/rename.c @@ -911,7 +911,6 @@ void test_diff_rename__case_changes_are_split(void) { git_index *index; git_tree *tree; - git_diff_options opts = GIT_DIFF_OPTIONS_INIT; git_diff_list *diff = NULL; diff_expects exp;