Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022
Os sistemas de arquivos Windows, macOS e Linux têm limitações e comportamentos que uma ou mais das outras plataformas nem sempre suportam. Como o Git é uma tecnologia multiplataforma, é possível que um desenvolvedor em uma plataforma faça uma confirmação que contenha arquivos ou pastas com nomes incompatíveis com o sistema de arquivos de outra plataforma. Proteger seu repositório dessa incompatibilidade é importante porque os desenvolvedores em outras plataformas podem, sem saber, verificar uma confirmação que corrompe seus diretórios de trabalho devido a nomes de arquivos ou caminhos sem suporte.
O Azure Repos oferece três configurações de compatibilidade entre plataformas que ajudam a proteger seu repositório contra pessoas que enviam confirmações incompatíveis com uma ou mais plataformas. Essas configurações estão relacionadas às seguintes limitações com sistemas de arquivos:
- Sensível às maiúsculas e minúsculas
- Restrições em nomes de arquivos e pastas
- Restrições de comprimento de caminho
Sensível às maiúsculas e minúsculas
Os sistemas de ficheiros do Windows e macOS são insensíveis a maiúsculas e minúsculas (mas preservam o uso de 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 controlo de versão do kernel Linux, por isso diferencia maiúsculas de minúsculas.
Embora o Git para Windows resolva muitos dos problemas com um sistema operacional que não diferencia maiúsculas de minúsculas, 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 arquivo distintos. No Windows e no macOS, a verificação de ambos os ficheiros faz com que o segundo substitua o primeiro. Se duas pastas diferirem apenas por maiúsculas e minúsculas, os seus conteúdos serão misturados em sistemas de arquivos que não distinguem entre maiúsculas e minúsculas.
Há duas maneiras de corrigir um repositório com conflitos de maiúsculas e minúsculas:
- Verifica o repositório 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. Subsistema Windows para Linux é um desses ambientes.
- Use o comando
git mv -f <conflicting name> <non-conflicting name>para cada conflito. Tenha cuidado para usar maiúsculas exatas em ambos os nomes de arquivo.
É bom evitar criar conflitos de situação desde o início. O Azure Repos oferece uma configuração de diferenciação de maiúsculas e minúsculas para evitar 'pushes' que poderiam levar a essa situação. Para os programadores, adotar o hábito de usar a tecla Tab para completar a confirmação de ficheiros também ajudará. Como tanto o Windows como o macOS preservam a capitalização, essas abordagens garantem que as rotinas internas do Git vejam exatamente a mesma capitalização utilizada pelo sistema de arquivos.
Nomes de ramificações e tags
Você pode criar dois ramos ou tags (conhecidas como refs) que diferem apenas na utilização de maiúsculas. Os internos do Git, juntamente com os Serviços de DevOps do Azure e o Servidor de DevOps do Azure, os tratam como duas refs separadas. Na máquina de um utilizador, o Git usa o sistema de arquivos para armazenar refs. Buscas e outras operações começam a falhar por causa da ambiguidade.
Um pequeno arquivo representa cada ref. Se um nome ref contiver caracteres de barra (/), as pastas representam as partes antes da barra final.
Uma maneira simples de evitar problemas é sempre usar nomes de ramos e etiquetas em minúsculas. Se já criaste duas ramificações ou tags com este problema, podes corrigi-los na interface web do Azure Repos.
Para corrigir nomes de filiais:
- Na página de ramificações, vá para o commit relacionado.
- No menu de atalho, selecione Nova ramificação.
- Dê à ramificação um novo nome que não tenha um conflito de letras maiúsculas.
- Volte à página para ramificações e exclua a ramificação conflitante.
Para corrigir nomes de tags:
- Na página de tags, vá para o commit tagueado.
- No menu de atalho, selecione Criar tag.
- Dê à etiqueta um novo nome que não entre em conflito de maiúsculas/minúsculas.
- Volte à página dos marcadores e elimine o marcador conflitante.
Restrições de caminho e nome de arquivo
Os sistemas operacionais Windows, macOS e Linux têm várias limitações para nomes de arquivos e caminhos. Essas limitações restringem o que você pode nomear arquivos ou pastas, o que pode criar problemas para equipes que usam o Git em várias plataformas.
Por exemplo, imagine que um desenvolvedor em uma plataforma confirma uma alteração no repositório compartilhado que contém um nome de arquivo ou comprimento de caminho inválido em outra plataforma. Mais tarde, outro desenvolvedor tenta verificar essa confirmação em uma plataforma onde o conteúdo é inválido. Essa situação resulta em um diretório de trabalho corrompido que tem o potencial de danificar seu repositório com dados corrompidos.
O Azure Repos oferece configurações de repositório que bloqueiam pushes contendo confirmações que violam uma ou mais das limitações a seguir.
Tabela de referência para nomes de arquivo e caminhos
| Restrições/Plataformas | Windows | macOS | Linux |
|---|---|---|---|
| Restrições de nome de arquivo |
Nomes de ficheiros reservados: CON, PRN, AUX, NUL, COM1-COM9, LPT1-LPT9 Nomes de ficheiros reservados seguidos de .Caracteres reservados: \ / : * ? " < > Nomes de arquivo que terminam em . ou espaço em branco |
Nomes de arquivo que terminam em / |
Nomes de arquivo que terminam em / |
| Restrições de comprimento de caminho |
Os caminhos no Windows têm um comprimento máximo de 260 caracteres (incluindo um terminador nulo). Para diretórios com .NET, o nome de arquivo totalmente qualificado deve ter menos de 260 caracteres e o nome do diretório deve ter menos de 248 caracteres. |
Os nomes dos ficheiros estão limitados a 255 caracteres. Os máximos de caminho no HFS+ são documentados como ilimitados, embora algumas versões do macOS limitem os caminhos a 1.016 caracteres. Alguns sistemas de arquivos suportam 1,016 como comprimento máximo do caminho. |
Os nomes dos ficheiros estão limitados a 255 caracteres. O comprimento máximo do caminho é 4096. |
Suporte de codificação
A Microsoft adicionou suporte para codificação UTF-16 e UTF-32 via o endpoint de web push. Este suporte significa que preservamos o tipo de codificação, para que não tenha de reescrever os seus ficheiros como UTF-8. Você também verá um aviso quando tentar salvar um arquivo que não está codificado em UTF pela Web (que suporta apenas codificação UTF).
A captura de tela a seguir mostra um exemplo da caixa de diálogo que aparece quando você introduz alterações de codificação usando um envio por push da Web.