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.