mozilla

Criando um patch

 

Depois de obter o código fonte, modifique-o, compile-o e teste-o, você pode querer receber suas mudanças revisadas e checadas]. Em ordem de fazer isto, você precisa criar um arquivo listando as mudanças que você fez, chamado patch ou diff file. Você pode gerá-lo usando o comando cvs diff.

Criando um diff de um arquivo único

Em ordem para criar um diff de um arquivo local único contra o arquivo atual no repositório, use:

$ cvs diff -u8p FILENAME

Isto cria um diff no então chamado formato 'unified' (-u), com 8 linhas de contexto. O diff é impresso para stdout por padrão. Para redirecionar a saída para um arquivo, use algo como:

$ cvs diff -u8p FILENAME > OUT_FILE

Criando um diff para arquivos múltiplos

Se, ao invés de usar um arquivo regular para FILENAME, você providenciar um diretório, então este diretório assim como todos os subdiretórios serão buscados recursivamente. Por exemplo

$ cvs diff -u8p . > OUT_FILE

comparará todos os arquivos no diretório corrente e todos os seus subdiretórios contra as versões no repositório, e escreverá as diffs combinadas e unificadas para um arquivo chamado OUT_FILE, usando 8 linhas de contexto.

Deve haver contexto suficiente no patch para que seja endendido sem abrir o código fonte. A linha-guia padrão é usar 8 linhas de contexto; se for colocado mais contexto, é necessário fazer o patch entendível, substitua 8 por um número maior. Também note que a maior quantidade de contexto que você inclui, aumenta a chance de permitir também aplicar o patch a um arquivo que difere pesadamente do código original contra o que o diff foi preparado.

Incluindo novos arquivo em um patch

Para incluir um novo arquivo em seu patch use a opção -N:

$ cvs diff -u8pN . > OUT_FILE

Um problema comum aqui é que cvs diff não incluirá os novos arquivos que não foram cvs added (cvs adicionado), e cvs requer acesso de escrita ao repositório.

A solução é usar a utilidade cvsdo , que edita CVS/Entries para fazer o cvs pensar que o arquivo foi adicionado ao repositório:

$ cvsdo add NEWFILE
$ cvs diff -u8pN NEWFILE > OUT_FILE

Note que este truque não trabalhará para novos diretórios; para isto, cvs add atualmente têm de modificar o repositório imediatamente, que requere acesso à escrita

Etiquetas do documento e colaboradores

Contributors to this page: fscholz, Verruckt, teoli
Última atualização por: teoli,