<Anterior | Conteúdo | Próxima>
remendo
O remendo programa é usado para aplicar alterações a arquivos de texto. Ele aceita saída de diff e geralmente é usado para converter versões mais antigas de arquivos em versões mais recentes. Vamos considerar um exemplo famoso. O kernel do Linux é desenvolvido por uma grande equipe vagamente organizada de
contribuidores que enviam um fluxo constante de pequenas alterações no código-fonte. O kernel do Linux consiste em vários milhões de linhas de código, enquanto as alterações feitas por um contribuidor por vez são bem pequenas. Não faz sentido um contribuidor enviar a cada desenvolvedor uma árvore de código-fonte inteira do kernel toda vez que uma pequena alteração é feita. Em vez disso, um arquivo diff é enviado. O arquivo diff contém a mudança da versão anterior do kernel para a nova versão com as mudanças do contribuidor. O receptor então usa o remendo programa para aplicar a mudança à sua própria árvore de código-fonte. Usando diff/remendo oferece duas vantagens significativas:
1. O arquivo diff é muito pequeno, em comparação com o tamanho total da árvore de origem.
2. O arquivo diff mostra de forma concisa a mudança que está sendo feita, permitindo que os revisores do patch avaliem rapidamente.
Claro que, diff/remendo funcionará em qualquer arquivo de texto, não apenas no código-fonte. Seria igualmente aplicável a arquivos de configuração ou qualquer outro texto.
Para preparar um arquivo diff para uso com remendo, a documentação GNU (veja a leitura adicional abaixo) sugere o uso diff como se segue:
diff-Naur arquivo_antigo arquivo_novo > arquivo_dif
Onde arquivo_antigo e novo arquivo são arquivos individuais ou diretórios contendo arquivos. o r
opção suporta recursão de uma árvore de diretório.
Uma vez que o arquivo diff foi criado, podemos aplicá-lo para corrigir o arquivo antigo no novo arquivo:
correção arquivo_dif
Vamos demonstrar com nosso arquivo de teste:
[me @ linuxbox ~] $ diff -Naur arquivo1.txt arquivo2.txt> patchfile.txt
[me @ linuxbox ~] $ patch <patchfile.txt
patching file file1.txt [me @ linuxbox ~] $ cat arquivo1.txt b
cde
[me @ linuxbox ~] $ diff -Naur arquivo1.txt arquivo2.txt> patchfile.txt
[me @ linuxbox ~] $ patch <patchfile.txt
patching file file1.txt [me @ linuxbox ~] $ cat arquivo1.txt b
cde
Neste exemplo, criamos um arquivo diff chamado patchfile.txt e então usei o remendo programa para aplicar o patch. Observe que não precisamos especificar um arquivo de destino para remendo, visto que o arquivo diff (em formato unificado) já contém os nomes dos arquivos no cabeçalho. Uma vez que o patch é aplicado, podemos ver que file1.txt agora combina file2.txt.
patch tem um grande número de opções e existem programas utilitários adicionais que podem ser usados para analisar e editar patches.