Estou escrevendo um código que aplicará o programa patch(1) e quero impedir completamente que ele crie arquivos de backup. Ou seja, não quero que ele crie foo.orig
arquivos quando ele falha ao atualizar um arquivo específico (nesse caso, ele cria um foo.rej
arquivo) ou quando atualiza um arquivo com êxito, mas há alguma imprecisão envolvida, o que normalmente ocorre . Parece ser mais fácil falar do que fazer.
Caso base: executo o "patch" em um diretório de origem do Debian e ele não consegue atualizar o debian/changelog
arquivo. patch cria um arquivo file debian/changelog.orig
(que é o que estou tentando evitar).
A documentação menciona uma --no-backup-if-mismatch
opção, que parece ser exatamente o que eu preciso. Mas quando eu adiciono, o arquivo de backup ainda é criado, só que agora se chama debian/changelog.~1~
.
A documentação também diz que quando o --posix
switch estiver presente, os backups não serão feitos. Quando uso essa opção no lugar de , o arquivo de backup ainda é criado, mas com o sufixo --no-backup-if-mismatch
original ..orig
A única solução alternativa que encontrei é usar a -B/--prefix
opção para direcionar os backups para serem gravados em um diretório de minha escolha. Mas isso parece um hack feio. Não existe uma maneira mais limpa de evitar backups?
Responder1
Aparentemente -B/--prefix
é o único caminho a percorrer.
Responder2
De acordo com(diffutils)Backups, --no-backup-if-mismatch
faz o que você quer.
Responder3
Considere usar a --version-control none
opção não documentada. Essa opção édocumentado para a variante FreeBSD dopatch
.