Domyślnie w systemie MS Windows CaseSensitive jest wyłączone (disabled). System nie rozpoznaje wielkości liter/znaków. A co jeśli musimy mieć taką opcję włączoną np. na wybranym katalogu ?
Pytanie: Po co w MS Windows ?
Odpowiedź: Chcę skopiować lokalnie repozytorium kodu gita a tam mam przykładowo dwa pliki:
- dummyTable1.sql
- DummyTable1.sql
Nazwy niby takie same ale różnią się pierwszą literą, a dokładniej wielkością pierwszej litery.
Normalnie gdybyśmy kopiowali repozytorium lokalnie do swojego Workspace to powstał by konflikt ponieważ dla systemu operacyjnego MS Windows to są takie same pliki (w przeciwieństwie do systemu Linux czy macOS). Rodzi to problemy np. przy git itp gdzie mamy caseSensitive enabled.
No ale czy się nie da ?
Możemy to zrobić z poziomu terminala.
Musimy wskazać na katalog który ma być CaseSensitive.
Musimy wskazać katalog gdzie repozytorium gita trzyma swoje oryginalne dane.
Przy pierwszym zaciąganiu danych utworzy się struktura na dysku ale powstaną konflikty ponieważ jeden plik zamaże drugi.
Załóżmy, że nasze repozytorium ma być przechowywane w
C:\Repos\MojeRepo
W katalogu MojeRepo powstanie podkatalog .git z całą strukturą.
Nas interesuje:
C:\Repos\MojeRepo\.git\refs\remotes\origin
Katalog origin na dysku musi być pusty. W momencie pierwszego zaciągania danych ze zdalnego repozytorium pojawiły się tam dane.
Teraz z terminala:
fsutil file setCaseSensitiveInfo "c:\Repos\MojeRepo\.git\refs\remotes\origin" enable
Teraz wystarczy zrobić pull i wszystko się dociąga prawidłowo.