Sdílet prostřednictvím


Citlivost písmen Gitu

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Systémy souborů Windows a macOS nerozlišují malá a velká písmena (ale ve výchozím nastavení se zachovávají malá a velká písmena). U většiny systémů souborů Linuxu se rozlišují malá a velká písmena. Git byl původně sestavený tak, aby byl systémem správy verzí jádra Linuxu, takže není divu, že se rozlišují malá a velká písmena.

I když se v Gitu pro Windows vyřešilo mnoho problémů se systémem nerozlišujícím malá a malá písmena, zůstává několik dotazů.

Názvy souborů a složek

V Linuxu se rezervace úložiště Git, které obsahuje jak "File.txt", tak "file.txt" není problém. Jedná se o odlišné názvy souborů. V systému Windows a macOS způsobí rezervace obou souborů druhou přepsání prvního souboru. Pokud se dvě složky liší jenom v jednotlivých případech, jejich obsah se splete na systémech souborů bez rozlišování malých a velkých písmen.

Oprava konfliktů případů

Jedním ze způsobů, jak opravit úložiště s tímto problémem, je rezervovat ho v prostředí citlivém na malá a velká písmena. Přejmenujte soubory a složky, aby už nebyly v konfliktu, a pak tyto změny nasdílejte do úložiště. Subsystém Windows pro Linux je jedním z takových prostředí. Dalším přístupem je použití příkazu git mv -f <conflicting name> <non-conflicting name> pro každý konflikt, přičemž buďte opatrní, abyste u obou názvů souborů použili přesné velká písmena.

Předcházení konfliktům případů

Je dobré se vyhnout tomu, aby se tato situace vytvářela na prvním místě. Azure Repos nabízí nastavení vynucení případu, které zabrání nabízení, což by vedlo k této situaci. Vývojářům pomůže také používání funkce dokončování pomocí tabulátoru k potvrzení souborů. Vzhledem k tomu, že windows i macOS se zachovávají malá a velká písmena, zajistí se tím, že interní informace Gitu budou mít stejnou velikost písmen, jakou systém souborů používá.

Názvy větví a značek

Můžete vytvořit dvě větve nebo značky (označované jako odkazy), které se liší pouze v velikostech. Interní služby Gitu i Azure DevOps Services/TFS s nimi budou zacházet jako se dvěma samostatnými odkazy. Git na počítači uživatele používá systém souborů k ukládání refs. Načtení a další operace začnou selhávat kvůli nejednoznačnosti. Každý odkaz je reprezentován malým souborem a pokud název odkazu obsahuje / znaky, budou části před posledním / souborem reprezentovány složkami.

Jedním z jednoduchých způsobů, jak se vyhnout problémům, je vždy používat názvy větví a značek malými písmeny. Pokud jste už vytvořili dvě větve nebo značky s tímto problémem, můžete je opravit ve webovém uživatelském rozhraní Azure Repos.

Oprava názvů větví

Na stránce větví přejděte na související potvrzení. V místní nabídce zvolte "Nová větev". Dejte větvi nový název, který nemá konflikt velkých a malých písmen. Vraťte se na stránku větví a odstraňte konfliktní větev.

Oprava názvů značek

Postup opravy názvu značky je podobný větvím. Na stránce značek přejděte na označené potvrzení. V místní nabídce zvolte Vytvořit značku. Dejte značce nový název, který nemá konflikt písmen. Vraťte se na stránku značek a odstraňte konfliktní značku.