hgbook

diff it/ch05-daily.xml @ 876:851bed11c742

Update Chinese translation
author Dongsheng Song <dongsheng.song@gmail.com>
date Wed Oct 21 11:34:17 2009 +0800 (2009-10-21)
parents 8146341d2ed4
children 719b03ea27c8
line diff
     1.1 --- a/it/ch05-daily.xml	Sat Aug 22 19:06:12 2009 +0200
     1.2 +++ b/it/ch05-daily.xml	Wed Oct 21 11:34:17 2009 +0800
     1.3 @@ -1,17 +1,17 @@
     1.4  <chapter id="chap:daily">
     1.5    <?dbhtml filename="uso-quotidiano-di-mercurial.html"?>
     1.6 -  <title>L'uso quotidiano di Mercurial</title>
     1.7 +  <title>L&rsquo;uso quotidiano di Mercurial</title>
     1.8  
     1.9    <sect1>
    1.10      <title>Aggiungere file a un repository Mercurial</title>
    1.11  
    1.12      <para id="x_1a3">Mercurial lavora solo con i file che gli dite di amministrare nel vostro repository. Il comando <command role="hg-cmd">hg status</command> vi dirà quali sono i file che Mercurial non conosce, usando un <quote><literal>?</literal></quote> per mostrare questi file.</para>
    1.13  
    1.14 -    <para id="x_1a4">Per dire a Mercurial di tenere traccia di un file, usate il comando <command role="hg-cmd">hg add</command>. Una volta che avete aggiunto un file, la voce per quel file nell'elenco visualizzato da <command role="hg-cmd">hg status</command> cambia da <quote><literal>?</literal></quote> ad <quote><literal>A</literal></quote>.</para>
    1.15 +    <para id="x_1a4">Per dire a Mercurial di tenere traccia di un file, usate il comando <command role="hg-cmd">hg add</command>. Una volta che avete aggiunto un file, la voce per quel file nell&rsquo;elenco visualizzato da <command role="hg-cmd">hg status</command> cambia da <quote><literal>?</literal></quote> ad <quote><literal>A</literal></quote>.</para>
    1.16  
    1.17      &interaction.daily.files.add;
    1.18  
    1.19 -    <para id="x_1a5">Dopo aver eseguito <command role="hg-cmd">hg commit</command>, i file che avete aggiunto prima dell'inserimento non verranno più elencati dal comando <command role="hg-cmd">hg status</command>, perché il comportamento predefinito di <command role="hg-cmd">hg status</command> è quello di segnalarvi solo i file <quote>interessanti</quote> come (per esempio) quelli che avete modificato, rimosso, o rinominato. Se avete un repository che contiene migliaia di file, vorrete raramente sapere qualcosa dei file che Mercurial ha già registrato ma che non sono cambiati. (Potete comunque ottenere questa informazione, come vedremo più avanti.)</para>
    1.20 +    <para id="x_1a5">Dopo aver eseguito <command role="hg-cmd">hg commit</command>, i file che avete aggiunto prima dell&rsquo;inserimento non verranno più elencati dal comando <command role="hg-cmd">hg status</command>, perché il comportamento predefinito di <command role="hg-cmd">hg status</command> è quello di segnalarvi solo i file <quote>interessanti</quote> come (per esempio) quelli che avete modificato, rimosso, o rinominato. Se avete un repository che contiene migliaia di file, vorrete raramente sapere qualcosa dei file che Mercurial ha già registrato ma che non sono cambiati. (Potete comunque ottenere questa informazione, come vedremo più avanti.)</para>
    1.21  
    1.22      <para id="x_1a6">Mercurial non agisce immediatamente su un file che avete appena aggiunto, ma scatterà una fotografia dello stato del file la prossima volta che eseguirete un commit. Poi continuerà a tenere traccia dei cambiamenti che apportate al file ogni volta che eseguite un commit, fino a quando non rimuoverete il file.</para>
    1.23  
    1.24 @@ -22,7 +22,7 @@
    1.25  
    1.26        &interaction.daily.files.add-dir;
    1.27  
    1.28 -      <para id="x_1a8">Notate che, in questo esempio, Mercurial ha stampato i nomi dei file che ha aggiunto, mentre non lo ha fatto quando abbiamo aggiunto il file <filename>miofile.txt</filename> nell'esempio precedente.</para>
    1.29 +      <para id="x_1a8">Notate che, in questo esempio, Mercurial ha stampato i nomi dei file che ha aggiunto, mentre non lo ha fatto quando abbiamo aggiunto il file <filename>miofile.txt</filename> nell&rsquo;esempio precedente.</para>
    1.30  
    1.31        <para id="x_1a9">Questo accade perché, nel primo esempio, abbiamo esplicitamente nominato il file da aggiungere sulla riga di comando. In questi casi, Mercurial assume che sappiamo ciò che stiamo facendo, per cui non stampa alcuna informazione.</para>
    1.32  
    1.33 @@ -47,7 +47,7 @@
    1.34    <sect1>
    1.35      <title>Come rimuovere un file dal repository</title>
    1.36  
    1.37 -    <para id="x_1af">Una volta che avete deciso che un file non appartiene più al vostro repository, usate il comando <command role="hg-cmd">hg remove</command>. Questo comando cancella il file e dice a Mercurial di non tenerne più traccia (cosa che avverrà nel prossimo commit). Un file rimosso viene rappresentato con una <quote><literal>R</literal></quote> nell'elenco prodotto da <command role="hg-cmd">hg status</command>.</para>
    1.38 +    <para id="x_1af">Una volta che avete deciso che un file non appartiene più al vostro repository, usate il comando <command role="hg-cmd">hg remove</command>. Questo comando cancella il file e dice a Mercurial di non tenerne più traccia (cosa che avverrà nel prossimo commit). Un file rimosso viene rappresentato con una <quote><literal>R</literal></quote> nell&rsquo;elenco prodotto da <command role="hg-cmd">hg status</command>.</para>
    1.39  
    1.40      &interaction.daily.files.remove;
    1.41  
    1.42 @@ -70,7 +70,7 @@
    1.43      <sect2>
    1.44        <title>File mancanti</title>
    1.45  
    1.46 -      <para id="x_1b6">Mercurial considera <emphasis>mancante</emphasis> un file che avete cancellato senza usare <command role="hg-cmd">hg remove</command>. Un file mancante viene rappresentato con <quote><literal>!</literal></quote> nell'elenco mostrato da <command role="hg-cmd">hg status</command>. Di solito, i comandi Mercurial non agiscono mai sui file mancanti.</para>
    1.47 +      <para id="x_1b6">Mercurial considera <emphasis>mancante</emphasis> un file che avete cancellato senza usare <command role="hg-cmd">hg remove</command>. Un file mancante viene rappresentato con <quote><literal>!</literal></quote> nell&rsquo;elenco mostrato da <command role="hg-cmd">hg status</command>. Di solito, i comandi Mercurial non agiscono mai sui file mancanti.</para>
    1.48  
    1.49        &interaction.daily.files.missing;
    1.50  
    1.51 @@ -78,7 +78,7 @@
    1.52  
    1.53        &interaction.daily.files.remove-after;
    1.54  
    1.55 -      <para id="x_1b8">D'altra parte, se avete cancellato il file mancante per errore, passate al comando <command role="hg-cmd">hg revert</command> il nome del file da recuperare e il file riapparirà senza alcun cambiamento.</para>
    1.56 +      <para id="x_1b8">D&rsquo;altra parte, se avete cancellato il file mancante per errore, passate al comando <command role="hg-cmd">hg revert</command> il nome del file da recuperare e il file riapparirà senza alcun cambiamento.</para>
    1.57  
    1.58        &interaction.daily.files.recover-missing;
    1.59      </sect2>
    1.60 @@ -86,7 +86,7 @@
    1.61      <sect2>
    1.62        <title>Digressione: perché dire esplicitamente a Mercurial di rimuovere un file?</title>
    1.63  
    1.64 -      <para id="x_1b9">Potreste chiedervi perché Mercurial vi costringe a dirgli esplicitamente che state cancellando un file. Nelle prime fasi di sviluppo, Mercurial vi permetteva di cancellare un file nel modo che preferivate: avrebbe notato automaticamente l'assenza del file durante la successiva esecuzione di <command role="hg-cmd">hg commit</command> e avrebbe smesso di monitorarlo. In pratica, questo modo di operare rendeva troppo facile rimuovere accidentalmente un file senza accorgersene.</para>
    1.65 +      <para id="x_1b9">Potreste chiedervi perché Mercurial vi costringe a dirgli esplicitamente che state cancellando un file. Nelle prime fasi di sviluppo, Mercurial vi permetteva di cancellare un file nel modo che preferivate: avrebbe notato automaticamente l&rsquo;assenza del file durante la successiva esecuzione di <command role="hg-cmd">hg commit</command> e avrebbe smesso di monitorarlo. In pratica, questo modo di operare rendeva troppo facile rimuovere accidentalmente un file senza accorgersene.</para>
    1.66      </sect2>
    1.67  
    1.68      <sect2>
    1.69 @@ -96,7 +96,7 @@
    1.70  
    1.71        &interaction.daily.files.addremove;
    1.72  
    1.73 -      <para id="x_1bb">Il comando <command role="hg-cmd">hg commit</command> offre anche un'opzione <option role="hg-opt-commit">-A</option> che effettua la stessa operazione di aggiunta-e-rimozione, immediatamente seguita da un commit.</para>
    1.74 +      <para id="x_1bb">Il comando <command role="hg-cmd">hg commit</command> offre anche un&rsquo;opzione <option role="hg-opt-commit">-A</option> che effettua la stessa operazione di aggiunta-e-rimozione, immediatamente seguita da un commit.</para>
    1.75  
    1.76        &interaction.daily.files.commit-addremove;
    1.77      </sect2>
    1.78 @@ -108,9 +108,9 @@
    1.79      <para id="x_1bc">Mercurial fornisce un comando <command role="hg-cmd">hg copy</command> che vi permette di creare una nuova copia di un file. Quando copiate un file usando questo comando, Mercurial registra il fatto che il nuovo file è una copia del file originale e tratta i file copiati in maniera speciale quando unite il vostro lavoro con quello di qualcun altro.</para>
    1.80  
    1.81      <sect2>
    1.82 -      <title>I risultati di una copia durante un'unione</title>
    1.83 -
    1.84 -      <para id="x_1bd">Quello che succede durante un'unione è che i cambiamenti <quote>seguono</quote> la copia. Per illustrare al meglio cosa questo significa, creiamo un esempio. Cominceremo con il solito piccolo repository che contiene un singolo file.</para>
    1.85 +      <title>I risultati di una copia durante un&rsquo;unione</title>
    1.86 +
    1.87 +      <para id="x_1bd">Quello che succede durante un&rsquo;unione è che i cambiamenti <quote>seguono</quote> la copia. Per illustrare al meglio cosa questo significa, creiamo un esempio. Cominceremo con il solito piccolo repository che contiene un singolo file.</para>
    1.88  
    1.89        &interaction.daily.copy.init;
    1.90  
    1.91 @@ -126,7 +126,7 @@
    1.92  
    1.93        &interaction.daily.copy.status;
    1.94  
    1.95 -      <para id="x_1c1">Ma se passiamo l'opzione <option role="hg-opt-status">-C</option> al comando <command role="hg-cmd">hg status</command>, otterremo un'altra riga nell'elenco stampato: questo è il file <emphasis>da cui</emphasis> il nostro file appena aggiunto è stato copiato.</para>
    1.96 +      <para id="x_1c1">Ma se passiamo l&rsquo;opzione <option role="hg-opt-status">-C</option> al comando <command role="hg-cmd">hg status</command>, otterremo un&rsquo;altra riga nell&rsquo;elenco stampato: questo è il file <emphasis>da cui</emphasis> il nostro file appena aggiunto è stato copiato.</para>
    1.97  
    1.98        &interaction.daily.copy.status-copy;
    1.99  
   1.100 @@ -144,7 +144,7 @@
   1.101  
   1.102        <para id="x_1c4">Questo comportamento&emdash;dei cambiamenti a un file che si propagano alle copie del file&emdash;potrebbe sembrare esoterico, ma nella maggior parte dei casi è altamente desiderabile.</para>
   1.103  
   1.104 -      <para id="x_1c5">Prima di tutto, ricordatevi che questa propagazione avviene <emphasis>solamente</emphasis> durante un'unione. Quindi se usate <command role="hg-cmd">hg copy</command> su un file e in seguito modificate il file originale nel normale corso del vostro lavoro, non accadrà nulla.</para>
   1.105 +      <para id="x_1c5">Prima di tutto, ricordatevi che questa propagazione avviene <emphasis>solamente</emphasis> durante un&rsquo;unione. Quindi se usate <command role="hg-cmd">hg copy</command> su un file e in seguito modificate il file originale nel normale corso del vostro lavoro, non accadrà nulla.</para>
   1.106  
   1.107        <para id="x_1c6">La seconda cosa da sapere è che le modifiche si propagheranno alla copia solo se il changeset da cui state incorporando le modifiche <emphasis>non ha ancora visto</emphasis> la copia.</para>
   1.108  
   1.109 @@ -152,9 +152,9 @@
   1.110  
   1.111        <para id="x_1c8">Se dopo aver estratto e incorporato le mie modifiche Mercurial <emphasis>non</emphasis> avesse propagato i cambiamenti attraverso le copie, il vostro nuovo file sorgente ora conterrebbe il bug e, a meno che voi non sapeste come propagare la correzione a mano, il bug <emphasis>rimarrebbe</emphasis> nella vostra copia del file.</para>
   1.112  
   1.113 -      <para id="x_1c9">Propagando automaticamente le modifiche che hanno corretto il bug dal file originale alla copia, Mercurial previene questo tipo di problemi. A quanto ne so, Mercurial è <emphasis>l'unico</emphasis> sistema di controllo di revisione che propaga i cambiamenti verso le copie in questo modo.</para>
   1.114 -
   1.115 -      <para id="x_1ca">Una volta che la vostra cronologia dei cambiamenti contiene la registrazione che la copia e la successiva unione sono avvenute, di solito non c'è più bisogno di propagare cambiamenti dal file originale al file copiato. Questo è il motivo per cui Mercurial propaga i cambiamenti verso le copie solo durante la prima unione ma non successivamente.</para>
   1.116 +      <para id="x_1c9">Propagando automaticamente le modifiche che hanno corretto il bug dal file originale alla copia, Mercurial previene questo tipo di problemi. A quanto ne so, Mercurial è <emphasis>l&rsquo;unico</emphasis> sistema di controllo di revisione che propaga i cambiamenti verso le copie in questo modo.</para>
   1.117 +
   1.118 +      <para id="x_1ca">Una volta che la vostra cronologia dei cambiamenti contiene la registrazione che la copia e la successiva unione sono avvenute, di solito non c&rsquo;è più bisogno di propagare cambiamenti dal file originale al file copiato. Questo è il motivo per cui Mercurial propaga i cambiamenti verso le copie solo durante la prima unione ma non successivamente.</para>
   1.119      </sect2>
   1.120  
   1.121      <sect2>
   1.122 @@ -168,7 +168,7 @@
   1.123  
   1.124        <para id="x_1cc">Quando usate il comando <command role="hg-cmd">hg copy</command>, Mercurial esegue la copia dei file originali contenuti nella directory di lavoro nello stato in cui si trovano in quel momento. Questo significa che, se fate alcune modifiche a un file e poi lo copiate tramite <command role="hg-cmd">hg copy</command> senza prima aver inserito quelle modifiche nel repository, anche la nuova copia conterrà le modifiche che avete apportato fino a quel momento. (Trovo che questo comportamento sia leggermente controintuitivo ed è per questo che lo menziono qui.)</para>
   1.125  
   1.126 -      <para id="x_1cd">Il comando <command role="hg-cmd">hg copy</command> agisce in maniera simile al comando Unix <command>cp</command> (potete usare l'alias <command role="hg-cmd">hg cp</command> se preferite). Dobbiamo fornirgli due o più argomenti, di cui l'ultimo viene trattato come <emphasis>destinazione</emphasis> e tutti gli altri vengono trattati come <emphasis>sorgenti</emphasis>.</para>
   1.127 +      <para id="x_1cd">Il comando <command role="hg-cmd">hg copy</command> agisce in maniera simile al comando Unix <command>cp</command> (potete usare l&rsquo;alias <command role="hg-cmd">hg cp</command> se preferite). Dobbiamo fornirgli due o più argomenti, di cui l&rsquo;ultimo viene trattato come <emphasis>destinazione</emphasis> e tutti gli altri vengono trattati come <emphasis>sorgenti</emphasis>.</para>
   1.128  
   1.129        <para id="x_685">Se invocate <command role="hg-cmd">hg copy</command> con un singolo file come sorgente e la destinazione non esiste, il comando crea un nuovo file con quel nome.</para>
   1.130  
   1.131 @@ -178,15 +178,15 @@
   1.132  
   1.133        &interaction.daily.copy.dir-dest;
   1.134  
   1.135 -      <para id="x_1cf">Copiare una directory è un'operazione ricorsiva e preserva la struttura delle directory della sorgente.</para>
   1.136 +      <para id="x_1cf">Copiare una directory è un&rsquo;operazione ricorsiva e preserva la struttura delle directory della sorgente.</para>
   1.137  
   1.138        &interaction.daily.copy.dir-src;
   1.139  
   1.140 -      <para id="x_1d0">Se la sorgente e la destinazione sono entrambe directory, l'albero della sorgente viene ricreato nella directory di destinazione.</para>
   1.141 +      <para id="x_1d0">Se la sorgente e la destinazione sono entrambe directory, l&rsquo;albero della sorgente viene ricreato nella directory di destinazione.</para>
   1.142  
   1.143        &interaction.daily.copy.dir-src-dest;
   1.144  
   1.145 -      <para id="x_1d1">Come con il comando <command role="hg-cmd">hg remove</command>, se copiate un file manualmente e poi volete informare Mercurial di aver copiato il file, usate semplicemente l'opzione <option role="hg-opt-copy">--after</option> di <command role="hg-cmd">hg copy</command>.</para>
   1.146 +      <para id="x_1d1">Come con il comando <command role="hg-cmd">hg remove</command>, se copiate un file manualmente e poi volete informare Mercurial di aver copiato il file, usate semplicemente l&rsquo;opzione <option role="hg-opt-copy">--after</option> di <command role="hg-cmd">hg copy</command>.</para>
   1.147  
   1.148        &interaction.daily.copy.after;
   1.149      </sect2>
   1.150 @@ -205,18 +205,18 @@
   1.151  
   1.152      &interaction.daily.rename.status;
   1.153  
   1.154 -    <para id="x_1d5">Come accade per i risultati del comando <command role="hg-cmd">hg copy</command>, dobbiamo usare l'opzione <option role="hg-opt-status">-C</option> del comando <command role="hg-cmd">hg status</command> per vedere che Mercurial considera il file aggiunto come una copia del file originale ora rimosso.</para>
   1.155 +    <para id="x_1d5">Come accade per i risultati del comando <command role="hg-cmd">hg copy</command>, dobbiamo usare l&rsquo;opzione <option role="hg-opt-status">-C</option> del comando <command role="hg-cmd">hg status</command> per vedere che Mercurial considera il file aggiunto come una copia del file originale ora rimosso.</para>
   1.156  
   1.157      &interaction.daily.rename.status-copy;
   1.158  
   1.159 -    <para id="x_1d6">Come con <command role="hg-cmd">hg remove</command> e <command role="hg-cmd">hg copy</command>, potete usare l'opzione <option role="hg-opt-rename">--after</option> per informare Mercurial del cambiamento di nome dopo che il fatto è avvenuto. Nella maggior parte degli altri aspetti, il comportamento del comando <command role="hg-cmd">hg rename</command> e le opzioni che accetta sono simili a quelli del comando <command role="hg-cmd">hg copy</command>.</para>
   1.160 +    <para id="x_1d6">Come con <command role="hg-cmd">hg remove</command> e <command role="hg-cmd">hg copy</command>, potete usare l&rsquo;opzione <option role="hg-opt-rename">--after</option> per informare Mercurial del cambiamento di nome dopo che il fatto è avvenuto. Nella maggior parte degli altri aspetti, il comportamento del comando <command role="hg-cmd">hg rename</command> e le opzioni che accetta sono simili a quelli del comando <command role="hg-cmd">hg copy</command>.</para>
   1.161  
   1.162      <para id="x_686">Se avete familiarità con la riga di comando Unix, sarete felici di sapere che il comando <command role="hg-cmd">hg rename</command> può essere invocato come <command role="hg-cmd">hg mv</command>.</para>
   1.163  
   1.164      <sect2>
   1.165        <title>Rinominare i file e unire i cambiamenti</title>
   1.166  
   1.167 -      <para id="x_1d7">Dato che Mercurial rinomina i file tramite un'operazione di copia-e-rimozione, i cambiamenti vengono propagati nello stesso modo quando effettuate un'unione sia dopo aver copiato un file che dopo averlo rinominato.</para>
   1.168 +      <para id="x_1d7">Dato che Mercurial rinomina i file tramite un&rsquo;operazione di copia-e-rimozione, i cambiamenti vengono propagati nello stesso modo quando effettuate un&rsquo;unione sia dopo aver copiato un file che dopo averlo rinominato.</para>
   1.169  
   1.170        <para id="x_1d8">Se io modifico un file e voi lo rinominate e poi uniamo i nostri rispettivi cambiamenti, le mie modifiche al file con il suo nome originale verranno propagate al file con il suo nuovo nome. (Vi potreste aspettare che questo <quote>funzioni e basta</quote> ma in realtà non tutti i sistemi di controllo di revisione lo fanno.)</para>
   1.171  
   1.172 @@ -240,23 +240,23 @@
   1.173  
   1.174        <para id="x_1dd">Mi piace pensare a questo come a un conflitto perché entrambi gli sviluppatori hanno espresso intenzioni differenti a proposito di come il file dovrebbe essere chiamato.</para>
   1.175  
   1.176 -      <para id="x_1de">Cosa pensate che dovrebbe accadere quando Anna e Bruno uniscono il loro lavoro? L'effettivo comportamento di Mercurial è quello di preservare sempre <emphasis>entrambi</emphasis> i nomi quando unisce changeset che contengono cambiamenti di nome divergenti.</para>
   1.177 +      <para id="x_1de">Cosa pensate che dovrebbe accadere quando Anna e Bruno uniscono il loro lavoro? L&rsquo;effettivo comportamento di Mercurial è quello di preservare sempre <emphasis>entrambi</emphasis> i nomi quando unisce changeset che contengono cambiamenti di nome divergenti.</para>
   1.178  
   1.179        &interaction.rename.divergent.merge;
   1.180  
   1.181 -      <para id="x_1df">Notate che, sebbene Mercurial vi avverta del cambiamento di nome divergente, lascia che siate voi a riconciliare la divergenza dopo l'unione.</para>
   1.182 +      <para id="x_1df">Notate che, sebbene Mercurial vi avverta del cambiamento di nome divergente, lascia che siate voi a riconciliare la divergenza dopo l&rsquo;unione.</para>
   1.183      </sect2>
   1.184  
   1.185      <sect2>
   1.186        <title>Cambiamenti di nome convergenti e unioni</title>
   1.187  
   1.188 -      <para id="x_1e0">Un altro tipo di conflitto tra i cambiamenti di nome avviene quando due persone rinominano differenti file <emphasis>sorgente</emphasis> alla stessa <emphasis>destinazione</emphasis>. In questo caso, Mercurial esegue l'unione normalmente e lascia che siate voi a guidarlo verso una risoluzione ragionevole.</para>
   1.189 +      <para id="x_1e0">Un altro tipo di conflitto tra i cambiamenti di nome avviene quando due persone rinominano differenti file <emphasis>sorgente</emphasis> alla stessa <emphasis>destinazione</emphasis>. In questo caso, Mercurial esegue l&rsquo;unione normalmente e lascia che siate voi a guidarlo verso una risoluzione ragionevole.</para>
   1.190      </sect2>
   1.191  
   1.192      <sect2>
   1.193        <title>Altri casi particolari legati ai nomi</title>
   1.194  
   1.195 -      <para id="x_1e1">Mercurial soffre di un bug noto da tempo che gli impedisce di portare a termine un'unione in cui una parte contiene un file con un certo nome mentre l'altra contiene una directory con lo stesso nome. Questo è documentato come <ulink role="hg-bug" url="http://www.selenic.com/mercurial/bts/issue29">problema 29</ulink>.</para>
   1.196 +      <para id="x_1e1">Mercurial soffre di un bug noto da tempo che gli impedisce di portare a termine un&rsquo;unione in cui una parte contiene un file con un certo nome mentre l&rsquo;altra contiene una directory con lo stesso nome. Questo è documentato come <ulink role="hg-bug" url="http://www.selenic.com/mercurial/bts/issue29">problema 29</ulink>.</para>
   1.197  
   1.198        &interaction.issue29.go;
   1.199  
   1.200 @@ -278,7 +278,7 @@
   1.201    <sect1>
   1.202      <title>Affrontare unioni complesse</title>
   1.203  
   1.204 -    <para id="x_687">In un progetto grande o complicato, può capitare che l'unione tra due changeset provochi qualche mal di testa. Supponete che ci sia un file sorgente di grandi dimensioni che è stato ampiamente modificato da entrambe le parti di un'unione: quasi inevitabilmente, questo risulterà in conflitti, alcuni dei quali potrebbero avere bisogno di più di un tentativo per venire risolti.</para>
   1.205 +    <para id="x_687">In un progetto grande o complicato, può capitare che l&rsquo;unione tra due changeset provochi qualche mal di testa. Supponete che ci sia un file sorgente di grandi dimensioni che è stato ampiamente modificato da entrambe le parti di un&rsquo;unione: quasi inevitabilmente, questo risulterà in conflitti, alcuni dei quali potrebbero avere bisogno di più di un tentativo per venire risolti.</para>
   1.206  
   1.207      <para id="x_688">Costruiamoci un semplice esempio di questa eventualità e vediamo come affrontarlo. Cominceremo con un repository contenente un file e lo cloneremo due volte.</para>
   1.208  
   1.209 @@ -288,7 +288,7 @@
   1.210  
   1.211      &interaction.ch04-resolve.left;
   1.212  
   1.213 -    <para id="x_68a">Nell'altro, modificheremo il file in modo differente.</para>
   1.214 +    <para id="x_68a">Nell&rsquo;altro, modificheremo il file in modo differente.</para>
   1.215  
   1.216      &interaction.ch04-resolve.right;
   1.217  
   1.218 @@ -300,17 +300,17 @@
   1.219  
   1.220      &interaction.ch04-resolve.heads;
   1.221  
   1.222 -    <para id="x_68d">Normalmente, se eseguissimo il comando <command role="hg-cmd">hg merge</command> a questo punto, ci verrebbe presentata un'applicazione grafica tramite la quale riconciliare manualmente le modifiche in conflitto su <filename>miofile.txt</filename>. Tuttavia, per semplificare le cose ai fini della presentazione, vorremmo invece che l'unione fallisse immediatamente. Ecco un modo in cui possiamo farlo.</para>
   1.223 +    <para id="x_68d">Normalmente, se eseguissimo il comando <command role="hg-cmd">hg merge</command> a questo punto, ci verrebbe presentata un&rsquo;applicazione grafica tramite la quale riconciliare manualmente le modifiche in conflitto su <filename>miofile.txt</filename>. Tuttavia, per semplificare le cose ai fini della presentazione, vorremmo invece che l&rsquo;unione fallisse immediatamente. Ecco un modo in cui possiamo farlo.</para>
   1.224  
   1.225      &interaction.ch04-resolve.export;
   1.226  
   1.227 -    <para id="x_68e">Abbiamo chiesto al meccanismo di unione di Mercurial di eseguire il comando <command>false</command> (che, come desideriamo, fallisce immediatamente) se si accorge di non riuscire a risolvere un'unione automaticamente.</para>
   1.228 +    <para id="x_68e">Abbiamo chiesto al meccanismo di unione di Mercurial di eseguire il comando <command>false</command> (che, come desideriamo, fallisce immediatamente) se si accorge di non riuscire a risolvere un&rsquo;unione automaticamente.</para>
   1.229  
   1.230      <para id="x_68f">Se ora lanciamo <command role="hg-cmd">hg merge</command>, il comando dovrebbe fermarsi e riportare un fallimento.</para>
   1.231  
   1.232      &interaction.ch04-resolve.merge;
   1.233  
   1.234 -    <para id="x_690">Se anche non avessimo notato che l'unione è fallita, Mercurial eviterà di farci accidentalmente inserire nel repository i risultati di un'unione fallita.</para>
   1.235 +    <para id="x_690">Se anche non avessimo notato che l&rsquo;unione è fallita, Mercurial eviterà di farci accidentalmente inserire nel repository i risultati di un&rsquo;unione fallita.</para>
   1.236  
   1.237      &interaction.ch04-resolve.cifail;
   1.238  
   1.239 @@ -319,7 +319,7 @@
   1.240      <sect2>
   1.241        <title>Gli stati di risoluzione di un file</title>
   1.242  
   1.243 -      <para id="x_692">Quando avviene un'unione, di solito la maggior parte dei file rimarrà tale e quale. Mercurial terrà traccia dello stato di ogni file su cui deve operare.</para>
   1.244 +      <para id="x_692">Quando avviene un&rsquo;unione, di solito la maggior parte dei file rimarrà tale e quale. Mercurial terrà traccia dello stato di ogni file su cui deve operare.</para>
   1.245  
   1.246        <itemizedlist>
   1.247  	<listitem>
   1.248 @@ -330,34 +330,34 @@
   1.249  	</listitem>
   1.250        </itemizedlist>
   1.251  
   1.252 -      <para id="x_695">Se Mercurial vede un <emphasis>qualsiasi</emphasis> file nello stato irrisolto dopo un'unione, considera fallita l'unione. Fortunatamente, non abbiamo bisogno di ricominciare l'intera unione da zero.</para>
   1.253 -
   1.254 -      <para id="x_696">L'opzione <option role="hg-opt-resolve">--list</option> o <option role="hg-opt-resolve">-l</option> del comando <command role="hg-cmd">hg resolve</command> mostra lo stato di ogni file coinvolto in un'unione.</para>
   1.255 +      <para id="x_695">Se Mercurial vede un <emphasis>qualsiasi</emphasis> file nello stato irrisolto dopo un&rsquo;unione, considera fallita l&rsquo;unione. Fortunatamente, non abbiamo bisogno di ricominciare l&rsquo;intera unione da zero.</para>
   1.256 +
   1.257 +      <para id="x_696">L&rsquo;opzione <option role="hg-opt-resolve">--list</option> o <option role="hg-opt-resolve">-l</option> del comando <command role="hg-cmd">hg resolve</command> mostra lo stato di ogni file coinvolto in un&rsquo;unione.</para>
   1.258  
   1.259        &interaction.ch04-resolve.list;
   1.260  
   1.261 -      <para id="x_697">Nell'elenco stampato da <command role="hg-cmd">hg resolve</command>, un file risolto è contrassegnato con una <literal>R</literal> mentre un file irrisolto è contrassegnato con una <literal>U</literal>.  Se un file qualsiasi viene elencato con una  <literal>U</literal>, sappiamo che un tentativo di inserire i risultati dell'unione nel repository andrà incontro al fallimento.</para>
   1.262 -    </sect2>
   1.263 -
   1.264 -    <sect2>
   1.265 -      <title>Risolvere un'unione di file</title>
   1.266 -
   1.267 -      <para id="x_698">Abbiamo diverse opzioni per far passare un file dallo stato irrisolto a quello risolto. Quella di gran lunga più comune consiste nell'eseguire nuovamente <command role="hg-cmd">hg resolve</command>. Se passiamo i nomi di singoli file o directory, il comando riproverà a unire i file irrisolti presenti in quelle ubicazioni. Possiamo anche passare l'opzione <option role="hg-opt-resolve">--all</option> o <option role="hg-opt-resolve">-a</option> per riprovare a unire <emphasis>tutti</emphasis> i file irrisolti.</para>
   1.268 -
   1.269 -      <para id="x_699">Mercurial ci permette anche di modificare direttamente lo stato di risoluzione di un file. Possiamo contrassegnare manualmente un file come risolto usando l'opzione <option role="hg-opt-resolve">--mark</option> o come irrisolto usando l'opzione <option role="hg-opt-resolve">--unmark</option>. Questo ci consente di ripulire a mano un'unione particolarmente disordinata e di tenere traccia dei nostri progressi con ogni file man mano che procediamo.</para>
   1.270 +      <para id="x_697">Nell&rsquo;elenco stampato da <command role="hg-cmd">hg resolve</command>, un file risolto è contrassegnato con una <literal>R</literal> mentre un file irrisolto è contrassegnato con una <literal>U</literal>.  Se un file qualsiasi viene elencato con una  <literal>U</literal>, sappiamo che un tentativo di inserire i risultati dell&rsquo;unione nel repository andrà incontro al fallimento.</para>
   1.271 +    </sect2>
   1.272 +
   1.273 +    <sect2>
   1.274 +      <title>Risolvere un&rsquo;unione di file</title>
   1.275 +
   1.276 +      <para id="x_698">Abbiamo diverse opzioni per far passare un file dallo stato irrisolto a quello risolto. Quella di gran lunga più comune consiste nell&rsquo;eseguire nuovamente <command role="hg-cmd">hg resolve</command>. Se passiamo i nomi di singoli file o directory, il comando riproverà a unire i file irrisolti presenti in quelle ubicazioni. Possiamo anche passare l&rsquo;opzione <option role="hg-opt-resolve">--all</option> o <option role="hg-opt-resolve">-a</option> per riprovare a unire <emphasis>tutti</emphasis> i file irrisolti.</para>
   1.277 +
   1.278 +      <para id="x_699">Mercurial ci permette anche di modificare direttamente lo stato di risoluzione di un file. Possiamo contrassegnare manualmente un file come risolto usando l&rsquo;opzione <option role="hg-opt-resolve">--mark</option> o come irrisolto usando l&rsquo;opzione <option role="hg-opt-resolve">--unmark</option>. Questo ci consente di ripulire a mano un&rsquo;unione particolarmente disordinata e di tenere traccia dei nostri progressi con ogni file man mano che procediamo.</para>
   1.279      </sect2>
   1.280    </sect1>
   1.281  
   1.282    <sect1>
   1.283      <title>Formati di diff più utili</title>
   1.284  
   1.285 -    <para id="x_6c7">Il formato predefinito del testo stampato dal comando <command role="hg-cmd">hg diff</command> è compatibile all'indietro con il normale comando <command>diff</command>, ma questo presenta alcuni svantaggi.</para>
   1.286 +    <para id="x_6c7">Il formato predefinito del testo stampato dal comando <command role="hg-cmd">hg diff</command> è compatibile all&rsquo;indietro con il normale comando <command>diff</command>, ma questo presenta alcuni svantaggi.</para>
   1.287  
   1.288      <para id="x_6c8">Considerate il caso in cui si utilizzi <command role="hg-cmd">hg rename</command> per rinominare un file.</para>
   1.289  
   1.290      &interaction.ch04-diff.rename.basic;
   1.291  
   1.292 -    <para id="x_6c9">Il risultato di <command role="hg-cmd">hg diff</command> mostrato qui sopra offusca il fatto che abbiamo semplicemente rinominato un file. Il comando <command role="hg-cmd">hg diff</command> accetta l'opzione <option>--git</option> o <option>-g</option> per usare un formato di diff più nuovo che presenta queste informazioni in una forma più leggibile.</para>
   1.293 +    <para id="x_6c9">Il risultato di <command role="hg-cmd">hg diff</command> mostrato qui sopra offusca il fatto che abbiamo semplicemente rinominato un file. Il comando <command role="hg-cmd">hg diff</command> accetta l&rsquo;opzione <option>--git</option> o <option>-g</option> per usare un formato di diff più nuovo che presenta queste informazioni in una forma più leggibile.</para>
   1.294  
   1.295      &interaction.ch04-diff.rename.git;
   1.296  
   1.297 @@ -365,7 +365,7 @@
   1.298  
   1.299      &interaction.ch04-diff.chmod;
   1.300  
   1.301 -    <para id="x_6cb">Il normale comando <command>diff</command> non considera i permessi dei file, perciò la semplice invocazione di <command role="hg-cmd">hg diff</command> non stampa nulla. Se però utilizziamo l'opzione <option>-g</option>, il comando ci dice che cos'è realmente accaduto.</para>
   1.302 +    <para id="x_6cb">Il normale comando <command>diff</command> non considera i permessi dei file, perciò la semplice invocazione di <command role="hg-cmd">hg diff</command> non stampa nulla. Se però utilizziamo l&rsquo;opzione <option>-g</option>, il comando ci dice che cos&rsquo;è realmente accaduto.</para>
   1.303  
   1.304      &interaction.ch04-diff.chmod.git;
   1.305    </sect1>
   1.306 @@ -373,7 +373,7 @@
   1.307    <sect1>
   1.308      <title>Quali file gestire e quali file evitare</title>
   1.309  
   1.310 -    <para id="x_6cc">Generalmente, i sistemi di controllo di revisione danno il meglio nella gestione dei file di testo scritti da esseri umani, come il codice sorgente, i cui file non cambiano molto da una revisione all'altra. Alcuni sistemi centralizzati di controllo di revisione possono anche destreggiarsi abbastanza bene con i file binari, come le immagini bitmap.</para>
   1.311 +    <para id="x_6cc">Generalmente, i sistemi di controllo di revisione danno il meglio nella gestione dei file di testo scritti da esseri umani, come il codice sorgente, i cui file non cambiano molto da una revisione all&rsquo;altra. Alcuni sistemi centralizzati di controllo di revisione possono anche destreggiarsi abbastanza bene con i file binari, come le immagini bitmap.</para>
   1.312  
   1.313      <para id="x_6cd">Per esempio, gli sviluppatori di un gioco dovranno tipicamente gestire sia il proprio codice sorgente sia le proprie risorse binarie (e.g. dati geometrici, texture, schemi di mappe) attraverso un sistema di controllo di revisione.</para>
   1.314  
   1.315 @@ -385,9 +385,9 @@
   1.316  
   1.317      <para id="x_6d1">Quando Mercurial memorizza le modifiche a un file, di solito salva solo le differenze tra la versione corrente del file e quella precedente. Per la maggior parte dei file di testo questo approccio si rivela estremamente efficiente. Tuttavia, alcuni file (in particolare i file binari) sono fatti in modo tale che persino una piccola modifica al contenuto logico del file risulta nel cambiamento di molti o della maggior parte dei byte contenuti nel file. Per esempio, i file compressi sono particolarmente sensibili a questo effetto. Se le differenze tra ogni versione di un file e la successiva sono sempre grandi, Mercurial non riuscirà a memorizzare la cronologia del file in maniera molto efficiente. Questo potrebbe avere effetti sia sul bisogno di spazio di memorizzazione locale sia sulla quantità di tempo che viene impiegata per clonare un repository.</para>
   1.318  
   1.319 -    <para id="x_6d2">Per avere un'idea di come questo problema potrebbe riguardarvi nella pratica, supponete di voler usare Mercurial per gestire un documento OpenOffice. OpenOffice memorizza i documenti su disco sotto forma di file ZIP compressi. Modificate anche solo una lettera nel vostro documento in OpenOffice e quasi ogni byte nell'intero file cambierà quando lo salverete. Ora supponete che le dimensioni di quel file siano pari a 2MB. Dato che la maggior parte del file cambia ogni volta che lo salvate, Mercurial dovrà memorizzare tutti i 2MB del file ogni volta che eseguite un commit, anche se dal vostro punto di vista forse solo poche parole vengono cambiate ogni volta. Un singolo file modificato frequentemente che non rispetti le assunzioni dei meccanismi di memorizzazione di Mercurial può facilmente avere un effetto fuori misura sulle dimensioni del repository.</para>
   1.320 -
   1.321 -    <para id="x_6d3">Di male in peggio, se due di voi modificano il documento OpenOffice su cui state lavorando, non c'è alcun modo utile di effettuare un'unione tra le diverse versioni. In effetti, non c'è nemmeno un buon modo di capire quali sono le differenze tra i vostri rispettivi cambiamenti.</para>
   1.322 +    <para id="x_6d2">Per avere un&rsquo;idea di come questo problema potrebbe riguardarvi nella pratica, supponete di voler usare Mercurial per gestire un documento OpenOffice. OpenOffice memorizza i documenti su disco sotto forma di file ZIP compressi. Modificate anche solo una lettera nel vostro documento in OpenOffice e quasi ogni byte nell&rsquo;intero file cambierà quando lo salverete. Ora supponete che le dimensioni di quel file siano pari a 2MB. Dato che la maggior parte del file cambia ogni volta che lo salvate, Mercurial dovrà memorizzare tutti i 2MB del file ogni volta che eseguite un commit, anche se dal vostro punto di vista forse solo poche parole vengono cambiate ogni volta. Un singolo file modificato frequentemente che non rispetti le assunzioni dei meccanismi di memorizzazione di Mercurial può facilmente avere un effetto fuori misura sulle dimensioni del repository.</para>
   1.323 +
   1.324 +    <para id="x_6d3">Di male in peggio, se due di voi modificano il documento OpenOffice su cui state lavorando, non c&rsquo;è alcun modo utile di effettuare un&rsquo;unione tra le diverse versioni. In effetti, non c&rsquo;è nemmeno un buon modo di capire quali sono le differenze tra i vostri rispettivi cambiamenti.</para>
   1.325  
   1.326      <para id="x_6d4">Quindi, ci sono alcune chiare raccomandazioni da fare sui tipi di file ai quali dovete stare molto attenti.</para>
   1.327  
   1.328 @@ -404,12 +404,12 @@
   1.329    <sect1>
   1.330      <title>Realizzare backup e mirror</title>
   1.331  
   1.332 -    <para id="x_6d7">Dato che Mercurial mantiene una copia completa della cronologia in ogni clone, chiunque usi Mercurial per collaborare su un progetto può potenzialmente agire come una sorgente di backup nell'eventualità di una catastrofe. Se un repository centrale diventa inaccessibile, potete costruire un rimpiazzo semplicemente clonando una copia del repository da un collaboratore ed estraendo dai repository di altre persone qualsiasi cambiamento che quella copia potrebbe non avere visto.</para>
   1.333 -
   1.334 -    <para id="x_6d8">Usare Mercurial per effettuare backup separati e mirror remoti è piuttosto semplice. Impostate un'attività periodica (e.g. tramite il comando <command>cron</command>) su un server remoto per estrarre i cambiamenti dai vostri repository principali ogni ora. Questa operazione diventerà complicata solo nell'improbabile caso in cui il numero dei repository principali che mantenete cambi frequentemente, eventualità che potrete affrontare utilizzando uno script per programmare l'aggiornamento della lista dei repository di cui fare il backup.</para>
   1.335 -
   1.336 -    <para id="x_6d9">Se effettuate un backup tradizionale dei vostri repository principali su nastro o su disco e volete fare il backup di un repository chiamato <filename>miorepo</filename>, usate il comando <command>hg clone -U miorepo miorepo.bak</command> per creare un clone di <filename>miorepo</filename> prima di cominciare a registrare i vostri backup. L'opzione <option>-U</option> evita di popolare la directory di lavoro dopo che la clonazione si è conclusa, dato che sarebbe superfluo e renderebbe più lungo il backup.</para>
   1.337 -
   1.338 -    <para id="x_6da">Se poi effettuate il backup di <filename>miorepo.bak</filename> invece di <filename>miorepo</filename>, avrete la garanzia di possedere una fotografia consistente del vostro repository a cui nessuno sviluppatore insonne trasmetterà i propri cambiamenti nel bel mezzo di un'operazione di backup.</para>
   1.339 +    <para id="x_6d7">Dato che Mercurial mantiene una copia completa della cronologia in ogni clone, chiunque usi Mercurial per collaborare su un progetto può potenzialmente agire come una sorgente di backup nell&rsquo;eventualità di una catastrofe. Se un repository centrale diventa inaccessibile, potete costruire un rimpiazzo semplicemente clonando una copia del repository da un collaboratore ed estraendo dai repository di altre persone qualsiasi cambiamento che quella copia potrebbe non avere visto.</para>
   1.340 +
   1.341 +    <para id="x_6d8">Usare Mercurial per effettuare backup separati e mirror remoti è piuttosto semplice. Impostate un&rsquo;attività periodica (e.g. tramite il comando <command>cron</command>) su un server remoto per estrarre i cambiamenti dai vostri repository principali ogni ora. Questa operazione diventerà complicata solo nell&rsquo;improbabile caso in cui il numero dei repository principali che mantenete cambi frequentemente, eventualità che potrete affrontare utilizzando uno script per programmare l&rsquo;aggiornamento della lista dei repository di cui fare il backup.</para>
   1.342 +
   1.343 +    <para id="x_6d9">Se effettuate un backup tradizionale dei vostri repository principali su nastro o su disco e volete fare il backup di un repository chiamato <filename>miorepo</filename>, usate il comando <command>hg clone -U miorepo miorepo.bak</command> per creare un clone di <filename>miorepo</filename> prima di cominciare a registrare i vostri backup. L&rsquo;opzione <option>-U</option> evita di popolare la directory di lavoro dopo che la clonazione si è conclusa, dato che sarebbe superfluo e renderebbe più lungo il backup.</para>
   1.344 +
   1.345 +    <para id="x_6da">Se poi effettuate il backup di <filename>miorepo.bak</filename> invece di <filename>miorepo</filename>, avrete la garanzia di possedere una fotografia consistente del vostro repository a cui nessuno sviluppatore insonne trasmetterà i propri cambiamenti nel bel mezzo di un&rsquo;operazione di backup.</para>
   1.346    </sect1>
   1.347  </chapter>