1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
---
title: Criando um patch
slug: Criando_um_patch
tags:
- Desenvolvimento_Mozilla
- Todas_as_Categorias
translation_of: Mercurial/Using_Mercurial
---
<p> </p>
<p>Depois de <a href="/en/Mozilla_Source_Code_Via_CVS">obter o código fonte</a>, modifique-o, <a href="/en/Build_and_Install">compile-o</a> e teste-o, você pode querer receber suas mudanças <a class="external" href="http://www.mozilla.org/hacking/life-cycle.html">revisadas e checadas</a>]. Em ordem de fazer isto, você precisa criar um arquivo listando as mudanças que você fez, chamado <em>patch</em> ou <em>diff file</em>. Você pode gerá-lo usando o comando <strong>cvs diff</strong>.</p>
<h3 id="Criando_um_diff_de_um_arquivo_.C3.BAnico" name="Criando_um_diff_de_um_arquivo_.C3.BAnico">Criando um diff de um arquivo único</h3>
<p>Em ordem para criar um diff de um arquivo local único contra o arquivo atual no repositório, use:</p>
<pre class="eval">$ cvs diff -u8p FILENAME
</pre>
<p>Isto cria um diff no então chamado formato 'unified' (<code>-u</code>), com 8 linhas de contexto. O diff é impresso para <strong>stdout</strong> por padrão. Para redirecionar a saída para um arquivo, use algo como:</p>
<pre class="eval">$ cvs diff -u8p FILENAME > OUT_FILE
</pre>
<h3 id="Criando_um_diff_para_arquivos_m.C3.BAltiplos" name="Criando_um_diff_para_arquivos_m.C3.BAltiplos">Criando um diff para arquivos múltiplos</h3>
<p>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</p>
<pre class="eval">$ cvs diff -u8p . > OUT_FILE
</pre>
<p>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.</p>
<p>Deve haver contexto suficiente no <em>patch</em> 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 <em>patch</em> 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 <em>patch</em> a um arquivo que difere pesadamente do código original contra o que o diff foi preparado.</p>
<h3 id="Incluindo_novos_arquivo_em_um_patch" name="Incluindo_novos_arquivo_em_um_patch">Incluindo novos arquivo em um <em>patch</em></h3>
<p>Para incluir um novo arquivo em seu <em>patch</em> use a opção <code>-N</code>:</p>
<pre class="eval">$ cvs diff -u8pN . > OUT_FILE
</pre>
<p>Um problema comum aqui é que <strong>cvs diff</strong> não incluirá os novos arquivos que não foram <strong>cvs add</strong>ed (cvs adicionado), e cvs requer acesso de escrita ao repositório.</p>
<p>A solução é usar a utilidade <strong>cvsdo</strong> , que edita <code>CVS/Entries</code> para fazer o cvs pensar que o arquivo foi adicionado ao repositório:</p>
<pre class="eval">$ cvsdo add NEWFILE
$ cvs diff -u8pN NEWFILE > OUT_FILE
</pre>
<p>Note que este truque não trabalhará para novos diretórios; para isto, <code>cvs add</code> atualmente têm de modificar o repositório imediatamente, que requere acesso à escrita</p>
|