Como posso converter todos os finais de linha em CRLF, LF ou CR durante operações SVN

StackOverflow https://stackoverflow.com/questions/15687

  •  08-06-2019
  •  | 
  •  

Pergunta

Então, você está pronto para fazer um grande SVN Commit e ele falha porque você tem finais de linha inconsistentes em alguns de seus arquivos.A parte divertida é que você está vendo milhares de arquivos abrangendo dezenas de pastas de diferentes profundidades.

O que você faz?

Foi útil?

Solução

Eu não acho que pré-comprometer hook pode realmente alterar os dados que estão sendo confirmados - pode proibir um commit, mas não acho que possa fazer a conversão para você.

Parece que você quer o propriedade 'svn:eol-style' definido como 'native' - isso converterá automaticamente novas linhas para o que for usado em sua plataforma (use 'CRLF', 'CR' ou 'LF' para obtê-las, independentemente do que o sistema operacional deseja).

Você pode usar propriedades automáticas para que todos os arquivos futuros que você criar tenham essa propriedade definida (os adereços automáticos são manipulados no lado do cliente, portanto, você terá que configurar isso para cada usuário).

Outras dicas

Primeiro é limpar tudo.Você está no Windows ou Unix/Linux/Mac?

Se você estiver no Unix/Linux/Mac, você pode tentar algo assim:

$ find . -type f -name "*.java" -exec dos2unix {}\;

Isso se você tiver dos2unix na sua caixa.Não está no meu Mac nem em nenhuma das seis máquinas Linux que temos.Parece que não instalamos este pacote específico.Felizmente, é fácil de encontrar.

Tenha cuidado ao usá-lo porque você não deseja alterar arquivos binários.

Depois de limpar tudo, você deve colocar o svn:eol-style propriedade em seus arquivos.Configurando-o para nativo fará o check-out do arquivo com o final de linha correto para sua máquina, mas os armazenará no formato de final de linha Unix.As outras três opções são "LF" para Unix, "CRLF" para Windows e "CR" para Macs pré-Mac OS X.A maioria das pessoas acha que "nativo" funciona melhor.O único problema com Native é que ele não fará check-in de um arquivo com finais de linha mistos, enquanto "LF" e "CRLF" farão.

Depois de fazer isso, você deverá obter um gancho de pré-confirmação isso permitirá que você imponha finais de linha em arquivos específicos.Em seguida, ensine seus desenvolvedores a usar propriedades automotivas.O gancho de pré-commit impedirá qualquer commit, a menos que a propriedade seja colocada no arquivo. Um desenvolvedor terá seu commit rejeitado uma ou duas vezes e configurará as propriedades automáticas por conta própria.

Adicione um gancho de pré-confirmação que analisa o conteúdo do arquivo e executa a manipulação de CRLF/LF/CR/etc para você antes de ser gravado no SVN.

Você pode considerar usar um comando como o do Linux dos2unix para a conversão.Por ser um comando do Linux, é fácil usá-lo em modo batch com scripts, etc.Não sei se existe um equivalente para outros sistemas operacionais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top