Git разделил один каталог на два на сервере TFS - PullRequest
0 голосов
/ 05 июня 2018

У меня есть некоторое хранилище Git, размещенное на TFS.Я разработал его некоторое время, и во время настройки CD наша команда заметила, что часть проекта разделена на две директории.Один написан в верхнем регистре, второй в верблюжьем.Я думал, что это просто проблема слияния.Но ... две директории видны только на веб-портале TFS при просмотре кода.Клонирование этого (на машине Windows) производит только один (заглавные буквы) каталог.Более того, в TFS содержимое каталога находится частично в первом, частично во втором каталоге.

В чем может быть причина?Если бы это был сервер Linux Git, я бы предположил, что это может быть какая-то разница в файловой системе.Но это сервер TFS для Windows.

ОБНОВЛЕНИЕ

Похоже, что во время разработки каталог был переименован из UPPERCASE в CameCase.Что интересно, TFS предлагает скачивание zip-файлов, а не только клонирование.В zip-файле есть один каталог.Но внутри каталога есть два файла (также переименованных).Во время распаковки zip просит заменить один файл.Похоже, чувствительность к регистру git и проблема нечувствительности к окну в Windows.

1 Ответ

0 голосов
/ 05 июня 2018

Как вы, возможно, знаете, внутренние имена файлов git (включая имена каталогов) - это просто текст в объекте TREE, который является более или менее сжатым текстовым файлом, представляющим список каталогов.Так что это чувствительно к регистру.

Как вы знаете (и указали), файловая система Windows не чувствительна к регистру.

Существует набор обходных путей, встроенный в git, управляемыйс помощью параметра конфигурации core.ignoreCase, который помогает уменьшить несоответствие.Они не идеальны, но по большей части, если все используют эту настройку правильно, и никто не пытается помешать ей, этого достаточно, чтобы обычно предотвратить неприятности.

Возможно, что кто-то не сделалон не был установлен правильно, или работал в системе, чувствительной к регистру, где они выключили core.ignoreCase, или набрал команду git add, явно используя противоречивый регистр из того, что было в то время в базе данных.Трудно перечислить точные сценарии в деталях, но дело в том, что обходной путь не идеален.Так что это может произойти.

И оттуда могут произойти плохие вещи , потому что два дерева, представляющих имена в разных случаях, могут иметь конфликтующее содержимое в версии.Так что, хотя это может или не может стоить переписать историю, вероятно, стоит исправить в подсказках ветки.

Кстати, причина, по которой вы видите это в пользовательском интерфейсе, но не в загруженном ZIPесть, TFS почти наверняка проверяет фиксацию (в файловую систему без учета регистра) как первый шаг в создании ZIP для загрузки;тогда как пользовательский интерфейс, вероятно, рисует непосредственно из объектов в базе данных репо.

Не уверен, что можно сказать гораздо больше, если у вас нет дополнительных вопросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...