Чарльз Бэйли правильно диагностировал проблему в комментариях: "git add
" в регистре без учета регистра.
Он связан с выпуском 286 msysgit: "Чувствительность к регистру имен каталогов", и проблема остается (опять же, для каталогов ), даже если для core.ignorecase
установлено значение true.
При добавлении "src\Web
" (с большой буквы «W
») ничего не добавит, если ваш индекс уже содержит «src\web
» (строчные буквы «w
»).
Патч был предложен, но отклонен:
Папка выглядит как неотслеживаемая, поскольку directory_exists_in_index()
пытается сравнить старое имя с новым именем и в итоге не находит соответствия для новой папки (даже еслифайл внутри него остается отслеженным!).
Было написано очень грубое исправление (выделено ниже), чтобы попытаться обойти проблему.
Теперь ... для моего минимального случая это работает - каталог больше не работаетуказан как неотслеживаемый.Но я настоятельно ожидаю, что это будет патч BROKEN по крайней мере по следующей причине: сравнение без учета регистра должно прервать бинарный поиск, так как регистр должен возвращать неправильную позицию, если в индексе было больше файлов.
dir.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/dir.c b/dir.c
index e05b850..c55a15c 100644
--- a/dir.c
+++ b/dir.c
@@ -444,7 +444,7 @@ static enum exist_status directory_exists_in_index(const char
*dirname, int len)
struct cache_entry *ce = active_cache[pos++];
unsigned char endchar;
- if (strncmp(ce->name, dirname, len))
+ if (strnicmp(ce->name, dirname, len))
break;
endchar = ce->name[len];
if (endchar > '/')
--
1.6.4.msysgit.0.2.gcb017.dirty
Так что вам нужно:
- изменить ваш
Web
на web
в вашем рабочем каталоге (файловой системе) - ИЛИ измените '
web
' на 'Web
' в индексе (git mv src/web src/Web
) в вашем индексе.