Eu li muitas perguntas e respostas diferentes no Stack Overflow, bem como a documentação do git sobre como a configuração core.autocrlf funciona.
Esta é a minha compreensão do que li:
Os clientes Unix e Mac OSX (pré-OSX usam CR) usam terminações de linha LF.
Os clientes Windows usam terminações de linha CRLF.
Quando core.autocrlf é definido como true no cliente, o repositório git sempre armazena arquivos no formato de final de linha LF e os finais de linha em arquivos no cliente são convertidos para frente e para trás no check-out / commit para clientes (ou seja, Windows) que usam não -LF terminações de linha, independentemente do formato dos arquivos de finalização de linha no cliente (isso não concorda com a definição de Tim Clem - veja a atualização abaixo).
Aqui está uma matriz que tenta documentar o mesmo para as configurações 'input' e 'false' do core.autocrlf com pontos de interrogação em que não tenho certeza do comportamento de conversão de final de linha.
Minhas perguntas são:
- Quais devem ser os pontos de interrogação?
- Essa matriz está correta para os "pontos de interrogação"?
Vou atualizar os pontos de interrogação das respostas à medida que o consenso parece ser formado.
valor core.autocrlf entrada verdadeira false -------------------------------------------------- -------- confirmar | converter? ? novo | para LF (converter para LF?) (sem conversão?) confirmar | converter para ? não existente | Conversão LF (converter para LF?) checkout | converter para ? não existente | Conversão CRLF (sem conversão?)
Na verdade, não estou procurando opiniões sobre os prós e contras das várias configurações. Estou apenas procurando dados que deixem claro como esperar que o git opere com cada uma das três configurações.
-
Atualização 17/04/2012 : Depois de ler o artigo de Tim Clem vinculado por JJD nos comentários, modifiquei alguns dos valores nos valores "desconhecidos" na tabela acima, além de alterar "checkout existente | true para converter para CRLF em vez de converter para cliente ". Aqui estão as definições que ele fornece, que são mais claras do que qualquer outra coisa que já vi em outros lugares:
core.autocrlf = false
Esse é o padrão, mas a maioria das pessoas é incentivada a mudar isso imediatamente. O resultado do uso de false é que o Git nunca mexe com as terminações de linha no seu arquivo. Você pode fazer check-in de arquivos com LF ou CRLF ou CR ou alguma mistura aleatória desses três e o Git não se importa. Isso pode dificultar a leitura do diffs e mesclar mais difícil. A maioria das pessoas que trabalha no mundo Unix / Linux usa esse valor porque não possui problemas de CRLF e não precisa que o Git faça um trabalho extra sempre que os arquivos forem gravados no banco de dados do objeto ou gravados no diretório de trabalho.
core.autocrlf = true
Isso significa que o Git processará todos os arquivos de texto e garantirá que o CRLF seja substituído pelo LF ao gravar esse arquivo no banco de dados de objetos e transformar todo o LF novamente no CRLF ao gravar no diretório de trabalho. Essa é a configuração recomendada no Windows, pois garante que seu repositório possa ser usado em outras plataformas, mantendo o CRLF em seu diretório de trabalho.
core.autocrlf = input
Isso significa que o Git processará todos os arquivos de texto e verifique se o CRLF é substituído pelo LF ao gravar esse arquivo no banco de dados do objeto. No entanto, não fará o contrário. Quando você lê os arquivos novamente no banco de dados do objeto e os grava no diretório de trabalho, eles ainda terão LFs para indicar o fim da linha. Essa configuração geralmente é usada no Unix / Linux / OS X para impedir que CRLFs sejam gravados no repositório. A idéia é que, se você colasse o código de um navegador da Web e colocasse CRLFs acidentalmente em um de seus arquivos, o Git garantiria que eles fossem substituídos por LFs quando você escrevesse no banco de dados de objetos.
O artigo de Tim é excelente, a única coisa que consigo pensar é que ele assume que o repositório está no formato LF, o que não é necessariamente verdadeiro, especialmente para projetos somente do Windows.
Comparar o artigo de Tim com a resposta mais votada até o momento por jmlane mostra concordância perfeita com as configurações true e input e discordância com a false false.
autocrlf
se falso parece muito mais fácil;) stackoverflow.com/questions/2333424/…