Partilhar via


Sensibilidade a maiúsculas e minúsculas

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Os sistemas de arquivos Windows e macOS não diferenciam maiúsculas de minúsculas (mas preservam maiúsculas e minúsculas) por padrão. A maioria dos sistemas de arquivos Linux diferencia maiúsculas de minúsculas. O Git foi construído originalmente para ser o sistema de controle de versão do kernel Linux, portanto, sem surpresa, é sensível a maiúsculas e minúsculas.

Embora muitos dos problemas com um sistema operacional que não diferencia maiúsculas de minúsculas tenham sido resolvidos no Git para Windows, algumas peculiaridades permanecem.

Nomes de ficheiros e pastas

No Linux, verificar um repositório Git que contém "File.txt" e "file.txt" não é problema. Esses são nomes de arquivos distintos. No Windows e macOS, o check-out de ambos os arquivos resultará na substituição do primeiro pelo segundo. Se duas pastas diferirem apenas por maiúsculas e minúsculas, seu conteúdo acabará misturado em sistemas de arquivos que não diferenciam maiúsculas de minúsculas.

Corrigindo conflitos de casos

Uma maneira de corrigir um repositório com esse problema é verificá-lo em um ambiente que diferencia maiúsculas de minúsculas. Renomeie arquivos e pastas para que não entrem mais em conflito e, em seguida, envie essas alterações para o repositório. O Subsistema Windows para Linux é um desses ambientes. Outra abordagem é usar o comando git mv -f <conflicting name> <non-conflicting name> para cada conflito, tendo o cuidado de usar maiúsculas exatas em ambos os nomes de arquivo.

Evitar conflitos de casos

É bom evitar criar essa situação em primeiro lugar. O Azure Repos oferece uma configuração de imposição de maiúsculas e minúsculas para evitar pushes que levariam a essa situação. Para os desenvolvedores, adotar o hábito de usar o preenchimento de guias para confirmar arquivos também ajudará. Como o Windows e o macOS preservam maiúsculas e minúsculas, isso garantirá que os internos do Git vejam exatamente a mesma caixa que o sistema de arquivos usa.

Nomes de ramificações e tags

Você pode criar duas ramificações ou tags (conhecidas como 'refs') que diferem apenas em maiúsculas. Os internos do Git, bem como os Serviços de DevOps/TFS do Azure, os tratarão como duas refs separadas. Na máquina de um usuário, o Git usa o sistema de arquivos para armazenar refs. Buscas e outras operações começam a falhar por causa da ambiguidade. Cada ref é representada por um pequeno arquivo e, se um nome ref contiver / caracteres, as partes antes do final / são representadas por pastas.

Uma maneira simples de evitar problemas é sempre usar nomes de ramificações e tags em minúsculas. Se você já tiver criado duas ramificações ou marcas com esse problema, poderá corrigi-lo na interface do usuário da Web do Azure Repos.

Fixação de nomes de filiais

Na página de ramificações, navegue até a confirmação relacionada. No menu de contexto, escolha "Nova filial". Dê à ramificação um novo nome que não tenha um conflito de maiúsculas e minúsculas. Retorne à página de ramificações e exclua a ramificação conflitante.

Corrigindo nomes de tags

As etapas para corrigir um nome de tag são semelhantes às ramificações. Na página de tags, navegue até a confirmação marcada. No menu de contexto, escolha "Criar tag". Dê à tag um novo nome que não tenha um conflito de maiúsculas e minúsculas. Retorne à página de tags e exclua a tag conflitante.