hgbook

diff it/ch03-tour-merge.xml @ 879:4688f8ac941d

User should use nxml-mode for emacs
author Dongsheng Song <dongsheng.song@gmail.com>
date Wed Oct 21 15:43:16 2009 +0800 (2009-10-21)
parents c06e8bddfcf9
children 719b03ea27c8
line diff
     1.1 --- a/it/ch03-tour-merge.xml	Sat Aug 22 17:26:06 2009 +0200
     1.2 +++ b/it/ch03-tour-merge.xml	Wed Oct 21 15:43:16 2009 +0800
     1.3 @@ -2,7 +2,7 @@
     1.4    <?dbhtml filename="una-panoramica-di-mercurial-le-unioni.html"?>
     1.5    <title>Una panoramica di Mercurial: le unioni</title>
     1.6  
     1.7 -  <para id="x_338">Finora abbiamo parlato di come clonare un repository, effettuare modifiche in un repository ed estrarre o trasmettere cambiamenti da un repository all'altro. Il nostro prossimo passo sarà quello di <emphasis>unire</emphasis> le modifiche provenienti da repository separati.</para>
     1.8 +  <para id="x_338">Finora abbiamo parlato di come clonare un repository, effettuare modifiche in un repository ed estrarre o trasmettere cambiamenti da un repository all&rsquo;altro. Il nostro prossimo passo sarà quello di <emphasis>unire</emphasis> le modifiche provenienti da repository separati.</para>
     1.9  
    1.10    <sect1>
    1.11      <title>Unire flussi di lavoro</title>
    1.12 @@ -13,7 +13,7 @@
    1.13  	<para id="x_33a">Alice e Bruno hanno entrambi una copia personale di un repository per un progetto su cui stanno collaborando. Mentre Alice corregge un bug nel suo repository, Bruno aggiunge una nuova funzione nel proprio. Entrambi vogliono che il repository condiviso contenga sia la correzione del bug sia la nuova funzione.</para>
    1.14        </listitem>
    1.15        <listitem>
    1.16 -	<para id="x_33b">Cinzia lavora frequentemente su più attività differenti alla volta per un singolo progetto, ognuna isolata al sicuro nel proprio repository. Lavorando in questo modo, Cinzia ha spesso bisogno di unire una parte del proprio lavoro con un'altra.</para>
    1.17 +	<para id="x_33b">Cinzia lavora frequentemente su più attività differenti alla volta per un singolo progetto, ognuna isolata al sicuro nel proprio repository. Lavorando in questo modo, Cinzia ha spesso bisogno di unire una parte del proprio lavoro con un&rsquo;altra.</para>
    1.18        </listitem>
    1.19      </itemizedlist>
    1.20  
    1.21 @@ -21,11 +21,11 @@
    1.22  
    1.23      &interaction.tour.merge.clone;
    1.24  
    1.25 -    <para id="x_33d">Ora abbiamo due copie di <filename>hello.c</filename> con contenuti differenti e le cronologie dei due repository divergono l'una dall'altra, come illustrato nella <xref linkend="fig:tour-merge:sep-repos"/>. Ecco la copia del nostro file presente nel primo repository.</para>
    1.26 +    <para id="x_33d">Ora abbiamo due copie di <filename>hello.c</filename> con contenuti differenti e le cronologie dei due repository divergono l&rsquo;una dall&rsquo;altra, come illustrato nella <xref linkend="fig:tour-merge:sep-repos"/>. Ecco la copia del nostro file presente nel primo repository.</para>
    1.27  
    1.28      &interaction.tour.merge.cat1;
    1.29  
    1.30 -    <para id="x_722">Ed ecco la versione leggermente differente contenuta nell'altro repository.</para>
    1.31 +    <para id="x_722">Ed ecco la versione leggermente differente contenuta nell&rsquo;altro repository.</para>
    1.32  
    1.33      &interaction.tour.merge.cat2;
    1.34  
    1.35 @@ -37,7 +37,7 @@
    1.36        </mediaobject>
    1.37      </figure>
    1.38  
    1.39 -    <para id="x_33f">Sappiamo già che l'estrazione dei cambiamenti dal nostro repository <filename class="directory">mio-hello</filename> non avrà alcun effetto sulla directory di lavoro.</para>
    1.40 +    <para id="x_33f">Sappiamo già che l&rsquo;estrazione dei cambiamenti dal nostro repository <filename class="directory">mio-hello</filename> non avrà alcun effetto sulla directory di lavoro.</para>
    1.41  
    1.42      &interaction.tour.merge.pull;
    1.43  
    1.44 @@ -46,7 +46,7 @@
    1.45      <sect2>
    1.46        <title>Le teste di un repository</title>
    1.47  
    1.48 -      <para id="x_341">Come ricorderete, Mercurial memorizza l'identità del genitore di ogni changeset. Se un cambiamento possiede un genitore, lo chiamiamo figlio o discendente del genitore. Una testa è un changeset che non ha figli. Quindi, la revisione di punta è una testa, perché la revisione più recente in un repository non possiede alcun figlio. Ci sono occasioni in cui un repository può contenere più di una testa.</para>
    1.49 +      <para id="x_341">Come ricorderete, Mercurial memorizza l&rsquo;identità del genitore di ogni changeset. Se un cambiamento possiede un genitore, lo chiamiamo figlio o discendente del genitore. Una testa è un changeset che non ha figli. Quindi, la revisione di punta è una testa, perché la revisione più recente in un repository non possiede alcun figlio. Ci sono occasioni in cui un repository può contenere più di una testa.</para>
    1.50  
    1.51        <figure id="fig:tour-merge:pull">
    1.52  	<title>I contenuti del repository dopo aver propagato i cambiamenti da <filename class="directory">mio-hello</filename> a <filename class="directory">mio-nuovo-hello</filename></title>
    1.53 @@ -58,33 +58,33 @@
    1.54  	</mediaobject>
    1.55        </figure>
    1.56  
    1.57 -      <para id="x_343">Dalla <xref linkend="fig:tour-merge:pull"/>, potete vedere l'effetto della propagazione dei cambiamenti dal repository  <filename class="directory">mio-hello</filename> al repository <filename class="directory">mio-nuovo-hello</filename>. La cronologia già presente in <filename class="directory">mio-nuovo-hello</filename> non viene toccata, ma al repository è stata aggiunta una nuova revisione. Riferendoci alla <xref linkend="fig:tour-merge:sep-repos"/>, possiamo vedere che nel nuovo repository l'<emphasis>identificatore di changeset</emphasis> rimane lo stesso, ma il <emphasis>numero di revisione</emphasis> è cambiato. (Questo, incidentalmente, è un buon esempio del perché sia inopportuno usare i numeri di revisione per discutere i changeset.) Possiamo vedere le teste di un repository utilizzando il comando <command role="hg-cmd">hg heads</command>.</para>
    1.58 +      <para id="x_343">Dalla <xref linkend="fig:tour-merge:pull"/>, potete vedere l&rsquo;effetto della propagazione dei cambiamenti dal repository  <filename class="directory">mio-hello</filename> al repository <filename class="directory">mio-nuovo-hello</filename>. La cronologia già presente in <filename class="directory">mio-nuovo-hello</filename> non viene toccata, ma al repository è stata aggiunta una nuova revisione. Riferendoci alla <xref linkend="fig:tour-merge:sep-repos"/>, possiamo vedere che nel nuovo repository l&rsquo;<emphasis>identificatore di changeset</emphasis> rimane lo stesso, ma il <emphasis>numero di revisione</emphasis> è cambiato. (Questo, incidentalmente, è un buon esempio del perché sia inopportuno usare i numeri di revisione per discutere i changeset.) Possiamo vedere le teste di un repository utilizzando il comando <command role="hg-cmd">hg heads</command>.</para>
    1.59  
    1.60        &interaction.tour.merge.heads;
    1.61      </sect2>
    1.62  
    1.63      <sect2>
    1.64 -      <title>Effettuare l'unione</title>
    1.65 +      <title>Effettuare l&rsquo;unione</title>
    1.66  
    1.67        <para id="x_344">Cosa succede se proviamo a usare normalmente il comando <command role="hg-cmd">hg update</command> per aggiornare la directory di lavoro alla nuova punta?</para>
    1.68  
    1.69        &interaction.tour.merge.update;
    1.70  
    1.71 -      <para id="x_345">Mercurial ci sta dicendo che <command role="hg-cmd">hg update</command> non è in grado di effettuare un'unione. Il comando non aggiornerà la directory di lavoro se pensa che potremmo voler eseguire un'unione, a meno che non gli chiediamo esplicitamente di farlo. (Incidentalmente, forzare l'aggiornamento tramite <command>hg update -C</command> provocherebbe la perdita di tutte le modifiche contenute nella directory di lavoro e non ancora inserite nel repository.)</para>
    1.72 -
    1.73 -      <para id="x_723">Per avviare un'unione tra le due teste, usiamo il comando <command role="hg-cmd">hg merge</command>.</para>
    1.74 +      <para id="x_345">Mercurial ci sta dicendo che <command role="hg-cmd">hg update</command> non è in grado di effettuare un&rsquo;unione. Il comando non aggiornerà la directory di lavoro se pensa che potremmo voler eseguire un&rsquo;unione, a meno che non gli chiediamo esplicitamente di farlo. (Incidentalmente, forzare l&rsquo;aggiornamento tramite <command>hg update -C</command> provocherebbe la perdita di tutte le modifiche contenute nella directory di lavoro e non ancora inserite nel repository.)</para>
    1.75 +
    1.76 +      <para id="x_723">Per avviare un&rsquo;unione tra le due teste, usiamo il comando <command role="hg-cmd">hg merge</command>.</para>
    1.77  
    1.78        &interaction.tour.merge.merge;
    1.79  
    1.80 -      <para id="x_347">Il contenuto del file <filename>hello.c</filename> viene sistemato. L'operazione aggiorna la directory di lavoro in modo che contenga le modifiche provenienti da <emphasis>entrambe</emphasis> le teste, cosa che si riflette sia nell'elenco visualizzato dal comando <command role="hg-cmd">hg parents</command> sia nei contenuti del file <filename>hello.c</filename>.</para>
    1.81 +      <para id="x_347">Il contenuto del file <filename>hello.c</filename> viene sistemato. L&rsquo;operazione aggiorna la directory di lavoro in modo che contenga le modifiche provenienti da <emphasis>entrambe</emphasis> le teste, cosa che si riflette sia nell&rsquo;elenco visualizzato dal comando <command role="hg-cmd">hg parents</command> sia nei contenuti del file <filename>hello.c</filename>.</para>
    1.82  
    1.83        &interaction.tour.merge.parents;
    1.84      </sect2>
    1.85  
    1.86      <sect2>
    1.87 -      <title>Inserire i risultati dell'unione nel repository</title>
    1.88 -
    1.89 -      <para id="x_348">Ogni volta che eseguiamo un'unione, il comando <command role="hg-cmd">hg parents</command> mostrerà due genitori fino a quando non invocheremo <command role="hg-cmd">hg commit</command> per inserire i risultati dell'unione nel repository.</para>
    1.90 +      <title>Inserire i risultati dell&rsquo;unione nel repository</title>
    1.91 +
    1.92 +      <para id="x_348">Ogni volta che eseguiamo un&rsquo;unione, il comando <command role="hg-cmd">hg parents</command> mostrerà due genitori fino a quando non invocheremo <command role="hg-cmd">hg commit</command> per inserire i risultati dell&rsquo;unione nel repository.</para>
    1.93  
    1.94        &interaction.tour.merge.commit;
    1.95  
    1.96 @@ -92,10 +92,10 @@
    1.97  
    1.98        &interaction.tour.merge.tip;
    1.99  
   1.100 -      <para id="x_34a">Nella <xref linkend="fig:tour-merge:merge"/>, potete vedere una rappresentazione di quanto accade alla directory di lavoro durante l'unione e di come questo abbia effetto sul repository quando avviene l'inserimento. Durante l'unione, la directory di lavoro possiede due changeset genitori che poi diventano i genitori del nuovo changeset.</para>
   1.101 +      <para id="x_34a">Nella <xref linkend="fig:tour-merge:merge"/>, potete vedere una rappresentazione di quanto accade alla directory di lavoro durante l&rsquo;unione e di come questo abbia effetto sul repository quando avviene l&rsquo;inserimento. Durante l&rsquo;unione, la directory di lavoro possiede due changeset genitori che poi diventano i genitori del nuovo changeset.</para>
   1.102  
   1.103        <figure id="fig:tour-merge:merge">
   1.104 -	<title>Lo stato della directory di lavoro e del repository durante l'unione e dopo l'inserimento</title>
   1.105 +	<title>Lo stato della directory di lavoro e del repository durante l&rsquo;unione e dopo l&rsquo;inserimento</title>
   1.106  	<mediaobject>
   1.107  	  <imageobject>
   1.108  	    <imagedata fileref="figs/tour-merge-merge.png"/>
   1.109 @@ -104,7 +104,7 @@
   1.110  	</mediaobject>
   1.111        </figure>
   1.112  
   1.113 -      <para id="x_69c">Talvolta si dice che un'unione è composta da due <emphasis>parti</emphasis>: la parte sinistra è costituita dal primo genitore elencato da <command role="hg-cmd">hg parents</command> e la parte destra dal secondo. Se per esempio la directory di lavoro si fosse trovata alla revisione 5 prima che cominciassimo l'unione, quella revisione sarebbe diventata la parte sinistra dell'unione.</para>
   1.114 +      <para id="x_69c">Talvolta si dice che un&rsquo;unione è composta da due <emphasis>parti</emphasis>: la parte sinistra è costituita dal primo genitore elencato da <command role="hg-cmd">hg parents</command> e la parte destra dal secondo. Se per esempio la directory di lavoro si fosse trovata alla revisione 5 prima che cominciassimo l&rsquo;unione, quella revisione sarebbe diventata la parte sinistra dell&rsquo;unione.</para>
   1.115      </sect2>
   1.116    </sect1>
   1.117  
   1.118 @@ -125,7 +125,7 @@
   1.119  
   1.120      <para id="x_34e">Mercurial non è dotato di alcuna funzione predefinita per gestire i conflitti. Invece, richiama un programma esterno, di solito uno che mostra un qualche tipo di interfaccia grafica per la risoluzione dei conflitti, trovato tra i tanti strumenti di unione differenti che è probabile siano installati sul vostro sistema. Come prima cosa, Mercurial prova a cercare alcuni strumenti di unione completamente automatici; poi, se non riesce a trovarli (perché il processo di risoluzione richiede una guida umana) o se non sono presenti, prova a richiamare diversi strumenti grafici di unione.</para>
   1.121  
   1.122 -    <para id="x_34f">&Egrave; anche possibile far eseguire a Mercurial uno specifico programma, impostando il valore della variable d'ambiente <envar>HGMERGE</envar> al nome del vostro programma preferito.</para>
   1.123 +    <para id="x_34f">&Egrave; anche possibile far eseguire a Mercurial uno specifico programma, impostando il valore della variable d&rsquo;ambiente <envar>HGMERGE</envar> al nome del vostro programma preferito.</para>
   1.124  
   1.125      <sect2>
   1.126        <title>Usare uno strumento grafico di unione</title>
   1.127 @@ -138,7 +138,7 @@
   1.128  	</listitem>
   1.129  	<listitem><para id="x_353">a destra troviamo la <quote>loro</quote> versione del file, quella che proviene dal changeset che stiamo cercando di incorporare.</para>
   1.130  	</listitem></itemizedlist>
   1.131 -      <para id="x_354">Il pannello sottostante contiene il <emphasis>risultato</emphasis> corrente dell'unione. Il nostro compito è quello di sostituire tutto il testo in rosso, che indica conflitti irrisolti, con una qualche combinazione ragionevole della <quote>nostra</quote> e della <quote>loro</quote> versione del file.</para>
   1.132 +      <para id="x_354">Il pannello sottostante contiene il <emphasis>risultato</emphasis> corrente dell&rsquo;unione. Il nostro compito è quello di sostituire tutto il testo in rosso, che indica conflitti irrisolti, con una qualche combinazione ragionevole della <quote>nostra</quote> e della <quote>loro</quote> versione del file.</para>
   1.133  
   1.134        <para id="x_355">Tutti e quattro questi pannelli sono <emphasis>collegati tra loro</emphasis>: se ci spostiamo in verticale o in orizzontale in un pannello qualsiasi, gli altri vengono aggiornati per mostrare le sezioni corrispondenti dei rispettivi file.</para>
   1.135  
   1.136 @@ -155,7 +155,7 @@
   1.137  
   1.138        <para id="x_357">Per ogni porzione conflittuale del file, possiamo scegliere di risolvere il conflitto usando una qualche combinazione di testo dalla versione base, dalla nostra, o dalla loro. Possiamo anche modificare manualmente il file risultante in ogni momento, nel caso avessimo bisogno di effettuare ulteriori cambiamenti.</para>
   1.139  
   1.140 -      <para id="x_358">Esistono <emphasis>molti</emphasis> strumenti per gestire l'unione di file, davvero troppi per elencarli qui. Si differenziano a seconda della piattaforma per cui sono disponibili e delle loro particolari forze e debolezze. La maggior parte è calibrata per unire file contenenti testo semplice, mentre alcuni sono orientati a particolari formati di file (generalmente XML).</para>
   1.141 +      <para id="x_358">Esistono <emphasis>molti</emphasis> strumenti per gestire l&rsquo;unione di file, davvero troppi per elencarli qui. Si differenziano a seconda della piattaforma per cui sono disponibili e delle loro particolari forze e debolezze. La maggior parte è calibrata per unire file contenenti testo semplice, mentre alcuni sono orientati a particolari formati di file (generalmente XML).</para>
   1.142      </sect2>
   1.143  
   1.144      <sect2>
   1.145 @@ -169,7 +169,7 @@
   1.146  
   1.147        &interaction.tour-merge-conflict.cousin;
   1.148  
   1.149 -      <para id="x_35b">E ora aggiungiamo un altro clone, per simulare qualcun altro che effettui un cambiamento al file. (Questo suggerisce l'idea che non è affatto inusuale ritrovarsi a unire tra loro i propri repository contenenti attività isolate, risolvendo i conflitti incontrati nel corso di questo processo.)</para>
   1.150 +      <para id="x_35b">E ora aggiungiamo un altro clone, per simulare qualcun altro che effettui un cambiamento al file. (Questo suggerisce l&rsquo;idea che non è affatto inusuale ritrovarsi a unire tra loro i propri repository contenenti attività isolate, risolvendo i conflitti incontrati nel corso di questo processo.)</para>
   1.151  
   1.152        &interaction.tour-merge-conflict.son;
   1.153  
   1.154 @@ -177,20 +177,20 @@
   1.155  
   1.156        &interaction.tour-merge-conflict.pull;
   1.157  
   1.158 -      <para id="x_35d">In questo esempio, imposterò la variabile d'ambiente <envar>HGMERGE</envar> per dire a Mercurial di usare il comando non interattivo <command>merge</command>. Questo comando è incluso in molti sistemi di tipo Unix. (Se state seguendo questo esempio sul vostro computer, non preoccupatevi di impostare <envar>HGMERGE</envar>. Vi verrà presentata un'applicazione grafica da utilizzare per unire i file, che è un'alternativa di gran lunga preferibile.)</para>
   1.159 +      <para id="x_35d">In questo esempio, imposterò la variabile d&rsquo;ambiente <envar>HGMERGE</envar> per dire a Mercurial di usare il comando non interattivo <command>merge</command>. Questo comando è incluso in molti sistemi di tipo Unix. (Se state seguendo questo esempio sul vostro computer, non preoccupatevi di impostare <envar>HGMERGE</envar>. Vi verrà presentata un&rsquo;applicazione grafica da utilizzare per unire i file, che è un&rsquo;alternativa di gran lunga preferibile.)</para>
   1.160  
   1.161        &interaction.tour-merge-conflict.merge;
   1.162  
   1.163 -      <para id="x_35f">Dato che <command>merge</command> non riesce a risolvere il conflitto tra i cambiamenti, inserisce alcuni <emphasis>marcatori di unione</emphasis> all'interno del file che esibisce i conflitti, per indicare quali righe sono in conflitto e se quelle righe provengono dalla nostra versione del file o dalla loro.</para>
   1.164 -
   1.165 -      <para id="x_360">Dal modo in cui <command>merge</command> termina, Mercurial riconosce che non è stato in grado di operare con successo, quindi ci dice quali comandi abbiamo bisogno di eseguire se vogliamo rifare l'operazione di unione. Questo potrebbe essere utile se, per esempio, stessimo lavorando con un'applicazione grafica per la gestione delle unioni e la chiudessimo perché siamo confusi o realizziamo di aver commesso un errore.</para>
   1.166 -
   1.167 -      <para id="x_361">Nel caso in cui l'unione automatica o manuale fallisca, nulla ci impedisce di <quote>correggere</quote> i file interessati per conto nostro, per poi inserire i risultati della nostra unione nel repository:</para>
   1.168 +      <para id="x_35f">Dato che <command>merge</command> non riesce a risolvere il conflitto tra i cambiamenti, inserisce alcuni <emphasis>marcatori di unione</emphasis> all&rsquo;interno del file che esibisce i conflitti, per indicare quali righe sono in conflitto e se quelle righe provengono dalla nostra versione del file o dalla loro.</para>
   1.169 +
   1.170 +      <para id="x_360">Dal modo in cui <command>merge</command> termina, Mercurial riconosce che non è stato in grado di operare con successo, quindi ci dice quali comandi abbiamo bisogno di eseguire se vogliamo rifare l&rsquo;operazione di unione. Questo potrebbe essere utile se, per esempio, stessimo lavorando con un&rsquo;applicazione grafica per la gestione delle unioni e la chiudessimo perché siamo confusi o realizziamo di aver commesso un errore.</para>
   1.171 +
   1.172 +      <para id="x_361">Nel caso in cui l&rsquo;unione automatica o manuale fallisca, nulla ci impedisce di <quote>correggere</quote> i file interessati per conto nostro, per poi inserire i risultati della nostra unione nel repository:</para>
   1.173        
   1.174        &interaction.tour-merge-conflict.commit;
   1.175  
   1.176        <note>
   1.177 -	<title>Dov'è il comando <command>hg resolve</command>?</title>
   1.178 +	<title>Dov&rsquo;è il comando <command>hg resolve</command>?</title>
   1.179  
   1.180  	<para id="x_724">Il comando <command>hg resolve</command> è stato introdotto nella verisone 1.1 di Mercurial rilasciata nel dicembre 2008. Se state usando una versione più vecchia (eseguite <command>hg version</command> per controllare) questo comando non sarà presente. Nel caso la vostra versione di Mercurial sia precedente alla 1.1, vi consiglio vivamente di installare una versione più recente prima di affrontare unioni complicate.</para>
   1.181        </note>
   1.182 @@ -204,31 +204,31 @@
   1.183      <programlisting>hg pull -u
   1.184  hg merge
   1.185  hg commit -m 'Incorporati i cambiamenti remoti'</programlisting>
   1.186 -    <para id="x_363">Nel caso dell'inserimento finale, avete anche bisogno di includere un messaggio di commit, che sarà quasi sempre composto da testo <quote>standard</quote> non particolarmente interessante.</para>
   1.187 -
   1.188 -    <para id="x_364">Se fosse possibile, sarebbe comodo ridurre il numero di passi necessari. In effetti, Mercurial viene distribuito con un'estensione chiamata <literal role="hg-ext">fetch</literal> pensata proprio per questo scopo.</para>
   1.189 +    <para id="x_363">Nel caso dell&rsquo;inserimento finale, avete anche bisogno di includere un messaggio di commit, che sarà quasi sempre composto da testo <quote>standard</quote> non particolarmente interessante.</para>
   1.190 +
   1.191 +    <para id="x_364">Se fosse possibile, sarebbe comodo ridurre il numero di passi necessari. In effetti, Mercurial viene distribuito con un&rsquo;estensione chiamata <literal role="hg-ext">fetch</literal> pensata proprio per questo scopo.</para>
   1.192  
   1.193      <para id="x_365">Mercurial fornisce un meccanismo flessibile per consentire ad altre persone di estendere le sue funzionalità, preservando le dimensioni ridotte e la manutenibilità del proprio nucleo. Alcune estensioni aggiungono nuovi comandi che potete usare dalla riga di comando, mentre altre lavorano <quote>dietro le quinte</quote>, per esempio accrescendo la funzionalità della modalità server predefinita di Mercurial.</para>
   1.194  
   1.195 -    <para id="x_366">L'estensione <literal role="hg-ext">fetch</literal> aggiunge un nuovo comando chiamato, naturalmente, <command role="hg-cmd">hg fetch</command>. Questa estensione agisce come una combinazione di <command role="hg-cmd">hg pull -u</command>, <command role="hg-cmd">hg merge</command> e <command role="hg-cmd">hg commit</command>. Comincia propagando verso il repository corrente i cambiamenti estratti da un altro repository. Se si accorge che i cambiamenti hanno aggiunto una nuova testa al repository, aggiorna la directory di lavoro alla nuova testa, poi avvia il processo di unione e infine, se l'unione ha successo, ne inserisce il risultato nel repository con un messaggio di commit generato automaticamente. Se non sono state aggiunte nuove teste, il comando si limita ad aggiornare la directory di lavoro alla nuova revisione di punta.</para>
   1.196 -
   1.197 -    <para id="x_367">Abilitare l'estensione <literal role="hg-ext">fetch</literal> è facile. Aprite il file <filename role="special">.hgrc</filename> che si trova nella vostra directory personale e andate alla sezione <literal role="rc-extensions">extensions</literal> (oppure createla se non esiste già). Poi aggiungete una riga che contenga semplicemente <quote><literal>fetch=</literal></quote>.</para>
   1.198 +    <para id="x_366">L&rsquo;estensione <literal role="hg-ext">fetch</literal> aggiunge un nuovo comando chiamato, naturalmente, <command role="hg-cmd">hg fetch</command>. Questa estensione agisce come una combinazione di <command role="hg-cmd">hg pull -u</command>, <command role="hg-cmd">hg merge</command> e <command role="hg-cmd">hg commit</command>. Comincia propagando verso il repository corrente i cambiamenti estratti da un altro repository. Se si accorge che i cambiamenti hanno aggiunto una nuova testa al repository, aggiorna la directory di lavoro alla nuova testa, poi avvia il processo di unione e infine, se l&rsquo;unione ha successo, ne inserisce il risultato nel repository con un messaggio di commit generato automaticamente. Se non sono state aggiunte nuove teste, il comando si limita ad aggiornare la directory di lavoro alla nuova revisione di punta.</para>
   1.199 +
   1.200 +    <para id="x_367">Abilitare l&rsquo;estensione <literal role="hg-ext">fetch</literal> è facile. Aprite il file <filename role="special">.hgrc</filename> che si trova nella vostra directory personale e andate alla sezione <literal role="rc-extensions">extensions</literal> (oppure createla se non esiste già). Poi aggiungete una riga che contenga semplicemente <quote><literal>fetch=</literal></quote>.</para>
   1.201  
   1.202      <programlisting>[extensions]
   1.203  fetch =</programlisting>
   1.204  
   1.205 -    <para id="x_368">(Normalmente, la parte a destra del simbolo <quote><literal>=</literal></quote> indicherebbe dove trovare l'estensione, ma dato che l'estensione <literal role="hg-ext">fetch</literal> è compresa nella distribuzione standard, Mercurial sa già dove andarla a cercare.)</para>
   1.206 +    <para id="x_368">(Normalmente, la parte a destra del simbolo <quote><literal>=</literal></quote> indicherebbe dove trovare l&rsquo;estensione, ma dato che l&rsquo;estensione <literal role="hg-ext">fetch</literal> è compresa nella distribuzione standard, Mercurial sa già dove andarla a cercare.)</para>
   1.207    </sect1>
   1.208  
   1.209    <sect1>
   1.210      <title>Rinominare, copiare e unire</title>
   1.211  
   1.212 -    <para id="x_729">Durante la vita di un progetto, vorremo spesso cambiare la disposizione dei suoi file e delle sue directory. Queste modifiche possono essere tanto semplici quanto rinominare un singolo file, o tanto complesse quanto ristrutturare l'intera gerarchia dei file nell'ambito del progetto.</para>
   1.213 +    <para id="x_729">Durante la vita di un progetto, vorremo spesso cambiare la disposizione dei suoi file e delle sue directory. Queste modifiche possono essere tanto semplici quanto rinominare un singolo file, o tanto complesse quanto ristrutturare l&rsquo;intera gerarchia dei file nell&rsquo;ambito del progetto.</para>
   1.214  
   1.215      <para id="x_72a">Mercurial supporta questi tipi di cambiamenti in maniera fluida, a patto che gli diciamo quello che stiamo facendo. Se vogliamo rinominare un file, dovremmo usare il comando <command>hg rename</command><footnote>
   1.216  	<para id="x_72b">Se siete utenti Unix, sarete felici di sapere che il comando <command>hg rename</command> si può abbreviare in <command>hg mv</command>.</para>
   1.217 -    </footnote> per cambiare il nome del file, in modo che Mercurial possa comportarsi in maniera appropriata nel caso più tardi effettuassimo un'unione.</para>
   1.218 -
   1.219 -    <para id="x_72c">Tratteremo l'uso di questi comandi in maniera più estesa nella <xref linkend="chap:daily.copy"/>.</para>
   1.220 +    </footnote> per cambiare il nome del file, in modo che Mercurial possa comportarsi in maniera appropriata nel caso più tardi effettuassimo un&rsquo;unione.</para>
   1.221 +
   1.222 +    <para id="x_72c">Tratteremo l&rsquo;uso di questi comandi in maniera più estesa nella <xref linkend="chap:daily.copy"/>.</para>
   1.223    </sect1>
   1.224  </chapter>