Usando diff e patch

Esses dois comandos são ferramentas extremamente úteis para o programador, com esses dois comandos fica fácil enviar patchs (remendos) de código para outros programadores sem precisar enviar o código todo.

diff

Digamos que você tem dois arquivos texto, um original e outro que é uma copia do original com alguma modificação.

O comando diff procura por diferenças entre dois arquivos ou mesmo duas arvores de diretórios, a forma mais simples de usar esse comando é a seguinte:

diff arquivoOriginal arquivoModificado

Esse comando vai retornar as diferenças entre os dois arquivos.

Para criar um arquivo patch redirecione a saída do diff como no exemplo abaixo.

diff arquivoOriginal arquivoModificado > arquivo.patch

patch

Para aplicar o patch e modificar o arquivo original deixando igual ao arquivo modificado basta fazer como no exemplo.

patch arquivoOriginal arquivo.patch

Esse comando vai modificar o arquivo original aplicando as modificações e o resultado vai ser idêntico ao arquivo modificado.

Esses são as formas mais básicas de usar diff e patch, existem muitos parâmetros úteis para serem explorados na man page.

Usando git

O git também pode gerar arquivos patch basta usar o comando abaixo.

git show > arquivo.patch

Outra opção para gerar arquivos de patch a partir do git é o comando diff como no exemplo abaixo.

git diff > arquivo.patch

Também é possível fazer patch de arquivos binários, útil quando se tem algum recurso como imagens no repositório.

git add .
git diff --staged --binary > arquivo.patch

Como esperado é possível aplicar o patch usando git também, para isso basta usar o comando apply como no exemplo abaixo.

git apply arquivo.patch

Conclusão

Hoje em dia com tudo em repositórios on-line como GitHub e outros o velho diff e patch são menos lembrados mas ainda continuam úteis, as vezes é uma forma prática de transportar alterações principalmente em sistemas que por segurança estão fora da grande rede.

Cesar Gimenes