O caso segue. Tenho dois arquivos: file1.c
,file2.c
ls
file1.c file2.c patch.diff
patch < patch.diff
...
x out of x hunk FAILED -- saving rejects to file file1.c.rej
(the same with file2.c)
ls
file1.c file2.c file1.c.orig file2.c.orig file1.c.rej file2.c.rej patch.diff
patch -R < patch.diff # I thought it will revert changes back
...
x out of x hunk FAILED -- saving rejects to file file1.c.rej
(again, the same with file2.c)
ls
file1.c file2.c file1.c.orig file2.c.orig file1.c.rej file2.c.rej patch.diff
Agora saí com arquivos quebrados e não tenho ideia de como recuperá-los. Parece que os arquivos *.orig foram substituídos na segunda passagem com alterações já quebradas. Alguma ideia?
É sempre uma boa ideia fazer cópias de segurança dos arquivos originais.
Isso pode ser feito automaticamente se você chamar
patch
com opção-b
.Background: caso não haja
.rej
arquivo, você pode chamar:para reverter o patch, mas isso não funciona em caso de problema.
Observe que, caso
file2.c.orig
já exista aopatch
iniciar, este arquivo é removido e substituído por uma cópia de backup do estado atual.Se você tiver esses
.orig
arquivos, poderá renomeá-los facilmente para o nome do arquivo original para desfazer o patch.Observe que pode ser uma boa ideia reverter todos os patches para todos os arquivos em um projeto caso um único patch falhe. Como isso requer
.orig
arquivos para todos os arquivos corrigidos, é recomendável usarSe você tiver esses
.orig
arquivos, você pode chamar: