Alterar terminações de linha no Windows usando Powershell e Git

Se você já teve que trabalhar com uma base de código onde os arquivos contêm linhas com terminações de linha inconsistentes

e

Você gostaria de ter certeza de que pelo menos os arquivos que você tocou não tenham mais esse problema

e

Você usa Powershell e MSysGit no Windows, você pode usar isto:

Para converter LF em CRLF:

git diff --cached --name-only | foreach { dos2unix -D $_ }

Isso basicamente diz ao git para listar os arquivos que foram testados e iterar sobre eles para alterar seus finais de linha

É uma boa quantidade de digitação, então eu criei o alias do comando git

git config --global alias.stgd 'diff --cached --name-only'

E o comando agora se torna:

git stgd | foreach { dos2unix -D $_}

Muito melhor. No entanto, os arquivos ainda não são testados. Vamos cuidar disso:

git stgd | foreach { dos2unix -D $_; git add $_}

E isso garantirá que todos os arquivos testados em que você trabalhou tenham terminações de linha adequadas no Windows 🙂

NOTA: Estou usando o dos2unix aqui e não TYPE unix_file | FIND "" /V > dos_filecomo sugerido pela wikipedia porque o find funciona de maneira diferente no PowerShell.