ferramenta diff e patch

1

Estou tentando gerar patches para vários arquivos que alterei. Eu estou usando o Meld que faz um ótimo trabalho de diff'ing os arquivos em uma agradável mansão visual, então me permite salvar e gerar um arquivo de patch com base nessas alterações.

O problema que tenho é que é lento fazer isso de cada vez. Existe uma ferramenta semelhante que eu possa usar para o trabalho em lote? Quero que ele verifique recursivamente todos os arquivos em dois diretórios e gere todos os arquivos de patch com base em suas descobertas.

    
por Mike 05.12.2012 / 15:08

2 respostas

3

Embora eu nunca tenha usado o Meld, tenho a sensação de que ele está realmente usando 'diff' embaixo das capas. A maneira como eu sempre gero arquivos de patch é simples:

$ diff -ruN ${dir1} ${dir2} > ${patchfile}.patch

Isso gera um único arquivo de correção grande, que você pode dividir como apropriado. Para gerar arquivos de correção individuais para cada alteração encontrada, você simplesmente executaria esse arquivo grande por meio de um script que se dividiu quando viu um novo conjunto de alterações (um script que não tenho em mãos nem conhece, pois nunca usei um como ele) ).

    
por 05.12.2012 / 15:14
1

É para isso que serve o diff . patch leva diff arquivos de saída como entrada. Apenas execute diff em um loop BASH para cada um dos seus arquivos. Por exemplo, se os arquivos originais estiverem em dirA e os novos em dirB (com os mesmos nomes de arquivos), faça isso (em ./dirA):

for n in $(ls * | grep -v ".o$"); do \
    diff -uN $n dirB/$n > $n.patch; patch $n < $n.patch; \
done 
    
por 05.12.2012 / 15:17

Tags