Udostępnij za pośrednictwem


Ważność wielkości liter w usłudze Git

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Systemy plików systemu Windows i macOS są domyślnie niewrażliwe na wielkość liter (ale zachowywanie wielkości liter). W większości systemów plików Systemu Linux uwzględniana jest wielkość liter. Git został zbudowany pierwotnie jako system kontroli wersji jądra systemu Linux, więc nic dziwnego, że jest uwzględniana wielkość liter.

Podczas gdy wiele problemów z systemem operacyjnym bez uwzględniania wielkości liter zostało rozwiązanych w usłudze Git dla systemu Windows, pozostaje kilka dziwactwa.

Nazwy plików i folderów

W systemie Linux wyewidencjonowanie repozytorium Git zawierającego zarówno "File.txt", jak i "file.txt" nie ma problemu. Są to odrębne nazwy plików. W systemach Windows i macOS wyewidencjonowanie obu plików spowoduje zastąpienie drugiego. Jeśli dwa foldery różnią się tylko wielkością liter, ich zawartość będzie mieszana razem w systemach plików bez uwzględniania wielkości liter.

Rozwiązywanie konfliktów przypadków

Jednym ze sposobów rozwiązania repozytorium z tym problemem jest sprawdzenie go w środowisku z uwzględnieniem wielkości liter. Zmień nazwy plików i folderów, aby nie były już w konflikcie, a następnie wypchnij te zmiany do repozytorium. Podsystem Windows dla systemu Linux jest jednym z takich środowisk. Innym podejściem jest użycie polecenia git mv -f <conflicting name> <non-conflicting name> dla każdego konfliktu, uważając, aby używać dokładnego wielkich liter w obu nazwach plików.

Unikanie konfliktów przypadków

Warto unikać tworzenia tej sytuacji w pierwszej kolejności. Usługa Azure Repos oferuje ustawienie wymuszania wielkości liter, aby zapobiec wypchnięciom, co doprowadziłoby do tej sytuacji. W przypadku deweloperów wdrożenie nawyku używania uzupełniania tabulatorów do zatwierdzania plików również pomoże. Ponieważ zarówno system Windows, jak i macOS zachowują wielkość liter, zapewni to, że wewnętrzne elementy usługi Git będą widzieć dokładnie taką samą wielkość liter, jaką używa system plików.

Nazwy gałęzi i tagów

Można utworzyć dwie gałęzie lub tagi (znane jako "refs"), które różnią się tylko wielkością liter. Wewnętrzne elementy usługi Git, a także usługi Azure DevOps Services/TFS, traktują je jako dwa oddzielne odwołania. Na maszynie użytkownika usługa Git używa systemu plików do przechowywania refs. Pobieranie i inne operacje rozpoczynają się niepowodzeniem z powodu niejednoznaczności. Każdy element ref jest reprezentowany przez mały plik, a jeśli nazwa ref zawiera / znaki, części przed finałem / są reprezentowane przez foldery.

Jednym z prostych sposobów uniknięcia problemów jest zawsze używanie nazw gałęzi i tagów z małymi literami. Jeśli masz już dwa gałęzie lub tagi z tym problemem, możesz rozwiązać ten problem w internetowym interfejsie użytkownika usługi Azure Repos.

Naprawianie nazw gałęzi

Na stronie gałęzie przejdź do powiązanego zatwierdzenia. W menu kontekstowym wybierz pozycję "Nowa gałąź". Nadaj gałęzi nową nazwę, która nie ma konfliktu przypadków. Wróć do strony gałęzie i usuń gałąź powodującą konflikt.

Naprawianie nazw tagów

Kroki naprawiania nazwy tagu są podobne do gałęzi. Na stronie tagów przejdź do zatwierdzenia oznakowanego. W menu kontekstowym wybierz pozycję "Utwórz tag". Nadaj tagowi nową nazwę, która nie ma konfliktu przypadków. Wróć do strony tagów i usuń tag powodujący konflikt.