Eu tenho um sistema que recebe patches invertidos (diff com operandos invertidos) e os aplica no modo invertido. O patch é chamado com --backup
para manter o arquivo original. No entanto, notei que não há diferenças entre o arquivo após o patch invertido e o arquivo result.orig
.
Caso de uso, se isso não estiver claro:
Eu corro alguns testes e comparo sua saída. Testes têm uma saída de referência em um arquivo ref
.
Quando um teste é executado com saída em result
, diff ref result
é chamado para ver o que foi alterado.
Se eu quiser "ignorar" essa diferença na suíte de testes, posso colocar a saída dessa diferença em um arquivo de correção. Por isso, será convertido o outpout esperado antes
o diff da próxima corrida de teste
Então, se eu quiser converter o resultado em ref com esse patch, eu tenho que usar o patch com --reverse
(Patch regular do diff anterior iria converter o meu ref em meu resultado).
O comando parece com patch -p0 result --backup -R -i some.patch
E o .orig resultante de -b durante esse patch parece ser idêntico ao resultado corrigido. Isso é com um patch 2.7.1 no linux. Em um patch 2.7.4 no cygwin, nenhum arquivo original parece gerado de forma alguma se -R
Qual é o comportamento esperado de patch --backup --reverse
?
Se eu quiser o resultado original, mas somente se o patch ocorrer, minhas soluções parecem manter uma cópia antes de aplicar o patch, apenas no caso, ou corrigir novamente o resultado no modo não invertido.
O que eu gostaria é que o patch saiba qual arquivo ele irá modificar, então ele mantém o backup deste arquivo. Patch parece pegar o conteúdo do arquivo de origem no patch, não o arquivo que ele corrige. Ou para não gerar um arquivo original, dependendo das versões.
Em suas respostas, por favor, suponha que eu não queira mudar a direção do patch, para facilitar a criação dos patches baseados no diff para usuários não tão amigáveis à tecnologia (não é essa a minha pergunta)
Tags patch