Конфиденциальность регистра Git
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Файловые системы Windows и macOS не учитывает регистр (но сохраняет регистр) по умолчанию. Большинство файловых систем Linux чувствительны к регистру. Git изначально был создан, чтобы быть системой управления версиями ядра Linux, поэтому неудивительно, что это учитывает регистр.
Хотя многие проблемы с нечувствительной операционной системой регистра были устранены в Git для Windows, некоторые причуды остаются.
Имена файлов и папок
В Linux проверка из репозитория Git, содержащего как File.txt, так и "file.txt", не является проблемой. Это разные имена файлов. В Windows и macOS проверка выходить из обоих файлов приведет ко второму перезаписи первого. Если две папки отличаются только по регистру, их содержимое в конечном итоге будет смешанным в файловых системах без учета регистра.
Устранение конфликтов случаев
Одним из способов устранения этой проблемы является проверка его в среде с учетом регистра.
Переименуйте файлы и папки, чтобы они больше не конфликтуют, а затем отправьте эти изменения в репозиторий.
подсистема Windows для Linux является одной из таких сред.
Другим подходом является использование команды git mv -f <conflicting name> <non-conflicting name>
для каждого конфликта, тщательное использование точной буквы в обоих именах файлов.
Предотвращение конфликтов регистров
Это хорошо, чтобы избежать создания этой ситуации в первую очередь. Azure Repos предлагает параметр принудительного применения случаев, чтобы предотвратить отправки, которые привели бы к этой ситуации. Для разработчиков, внедрение привычки использования табуляции для фиксации файлов также поможет. Так как windows и macOS сохраняют регистр, это гарантирует, что внутренние элементы Git видят точно тот же регистр, который использует файловая система.
Имена ветвей и тегов
Вы можете создать две ветви или теги (известные как refs), которые отличаются только в регистре.
Внутренние элементы Git, а также Azure DevOps Services/TFS будут рассматриваться как две отдельные ссылки.
На компьютере пользователя Git использует файловую систему для хранения ссылок.
Получение и другие операции начинаются сбоем из-за неоднозначности.
Каждая ссылка представлена небольшим файлом, и если имя ссылки содержит /
символы, части до окончательного /
представления папок.
Один из простых способов избежать проблем — всегда использовать имена ветвей всех строчных и тегов. Если вы уже создали две ветви или теги с этой проблемой, ее можно исправить в веб-интерфейсе Azure Repos.
Исправление имен ветвей
На странице ветвей перейдите к связанной фиксации. В контекстном меню выберите "Создать ветвь". Присвойте ветви новое имя, которое не имеет конфликта регистра. Вернитесь на страницу ветвей и удалите конфликтующую ветвь.
Исправление имен тегов
Действия по исправлению имени тега похожи на ветви. На странице тегов перейдите к помеченной фиксации. В контекстном меню выберите "Создать тег". Присвойте тегу новое имя, которое не имеет конфликта регистра. Вернитесь на страницу тегов и удалите конфликтующий тег.