Git - remove arquivos apagados

4

Estou usando esse alias simples do git

    rmdel = "!git rm $(git ls-files -d)"

significava "remover excluído", ou seja, para remover da área temporária todos os arquivos excluídos do sistema de arquivos. Ele funciona bem, exceto quando há arquivos contendo espaços em branco. Então, obviamente, a lista é dividida neles, levando também a nomes de arquivos não existentes.

Acho que deve ser possível resolvê-lo usando o IFS, mas o IFS parece não funcionar no cygwin e duvido que algo como

    rmdel = "!IFS=' ' git rm $(git ls-files -d)"'

poderia funcionar em tudo. Alguma idéia melhor?

    
por maaartinus 06.06.2011 / 16:10

1 resposta

4

ls-files tem um switch projetado para essa finalidade, -z :

-z    
$ git ls-files -dz | xargs -0 git rm
line termination on output.

xargs tem uma opção para permitir separar itens de entrada por um caractere nulo em vez de espaço em branco, -0 . Combinando-os, você ganha:

-z    
$ git ls-files -dz | xargs -0 git rm
line termination on output.
    
por 06.06.2011 / 16:16