hgbook

changeset 726:a306779822ec

First literal translation of Ch.2 and the bare minimum needed for example snippets.
author Giulio@puck
date Sun Jun 14 17:33:01 2009 +0200 (2009-06-14)
parents 8d0085a1f5f7
children 1c5ac11fcf6e
files .hgignore it/00book.xml it/ch02-tour-basic.xml it/examples/auto-snippets.xml
line diff
     1.1 --- a/.hgignore	Sat Jun 13 22:55:34 2009 +0200
     1.2 +++ b/.hgignore	Sun Jun 14 17:33:01 2009 +0200
     1.3 @@ -24,6 +24,7 @@
     1.4  en/examples/results
     1.5  en/html
     1.6  en/svn
     1.7 +it/examples/results
     1.8  it/html
     1.9  stylesheets/system-xsl
    1.10  tools
     2.1 --- a/it/00book.xml	Sat Jun 13 22:55:34 2009 +0200
     2.2 +++ b/it/00book.xml	Sun Jun 14 17:33:01 2009 +0200
     2.3 @@ -8,8 +8,8 @@
     2.4  
     2.5  <!ENTITY ch00     SYSTEM "ch00-preface.xml">
     2.6  <!ENTITY ch01     SYSTEM "ch01-intro.xml">
     2.7 +<!ENTITY ch02     SYSTEM "ch02-tour-basic.xml">
     2.8  <!--
     2.9 -<!ENTITY ch02     SYSTEM "ch02-tour-basic.xml">
    2.10  <!ENTITY ch03     SYSTEM "ch03-tour-merge.xml">
    2.11  <!ENTITY ch04     SYSTEM "ch04-concepts.xml">
    2.12  <!ENTITY ch05     SYSTEM "ch05-daily.xml">
    2.13 @@ -34,10 +34,9 @@
    2.14  %SHORTCUTS;
    2.15  
    2.16  <!-- Include automatically and manually generated code snippets. -->
    2.17 -<!--
    2.18 +
    2.19  <!ENTITY % AUTOSNIPPETS SYSTEM "examples/auto-snippets.xml">
    2.20  %AUTOSNIPPETS;
    2.21 --->
    2.22  ]>
    2.23  
    2.24  <book id="hg">
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/it/ch02-tour-basic.xml	Sun Jun 14 17:33:01 2009 +0200
     3.3 @@ -0,0 +1,511 @@
     3.4 +<chapter id="chap:tour-basic">
     3.5 +  <?dbhtml filename="una-panoramica-di-mercurial-le-basi.html"?>
     3.6 +  <title>Una panoramica di Mercurial: le basi</title>
     3.7 +
     3.8 +  <sect1 id="sec:tour:install">
     3.9 +    <title>Installare Mercurial sul vostro sistema</title>
    3.10 +
    3.11 +    <para id="x_1">Pacchetti di installazione binari precompilati sono disponibili per tutti i sistemi operativi più popolari. Questi pacchetti rendono facile cominciare a usare Mercurial immediatamente sul vostro computer.</para>
    3.12 +
    3.13 +    <sect2>
    3.14 +      <title>Windows</title>
    3.15 +
    3.16 +      <para id="x_c">La migliore versione di Mercurial per Windows è TortoiseHg, che può essere trovata all'indirizzo <ulink url="http://bitbucket.org/tortoisehg/stable/wiki/Home">http://bitbucket.org/tortoisehg/stable/wiki/Home</ulink>. Questo pacchetto non ha dipendenze esterne, ma è pronto a funzionare non appena viene installato. Fornisce sia un'interfaccia a linea di comando sia un'interfaccia grafica.</para>
    3.17 +
    3.18 +    </sect2>
    3.19 +
    3.20 +    <sect2>
    3.21 +      <title>Mac OS X</title>
    3.22 +
    3.23 +      <para id="x_a">Lee Cantey pubblica un pacchetto di installazione di Mercurial per Mac OS X all'indirizzo <ulink url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>.</para>
    3.24 +    </sect2>
    3.25 +
    3.26 +    <sect2>
    3.27 +      <title>Linux</title>
    3.28 +
    3.29 +      <para id="x_2">Dato che ogni distribuzione Linux ha i propri stumenti di impacchettamento, le proprie politiche e il proprio ritmo di sviluppo, è difficile dare un insieme completo di istruzioni su come installare i pacchetti binari di Mercurial. La versione di Mercurial che finirete per ottenere può variare a seconda di quanto sia attiva la persona che mantiene il pacchetto di installazione per la vostra distribuzione.</para>
    3.30 +
    3.31 +      <para id="x_3">Per mantenere le cose semplici, mi concentrerò sull'installazione di Mercurial dalla linea di comando sotto le distribuzioni Linux più popolari. La maggior parte di queste distribuzioni forniscono gestori grafici per i pacchetti di installazione che vi permetteranno di installare Mercurial con un singolo click del mouse. Il nome del pacchetto da cercare è <literal>mercurial</literal>.</para>
    3.32 +
    3.33 +      <itemizedlist>
    3.34 +	<listitem><para id="x_4">Ubuntu and Debian:</para>
    3.35 +	  <programlisting>apt-get install mercurial</programlisting></listitem>
    3.36 +	<listitem><para id="x_5">Fedora:</para>
    3.37 +	  <programlisting>yum install mercurial</programlisting></listitem>
    3.38 +	<listitem><para id="x_715">OpenSUSE:</para>
    3.39 +	  <programlisting>zypper install mercurial</programlisting></listitem>
    3.40 +	<listitem><para id="x_6">Gentoo:</para>
    3.41 +	  <programlisting>emerge mercurial</programlisting></listitem>
    3.42 +      </itemizedlist>
    3.43 +
    3.44 +    </sect2>
    3.45 +    <sect2>
    3.46 +      <title>Solaris</title>
    3.47 +
    3.48 +      <para id="x_9">SunFreeWare, all'indirizzo <ulink url="http://www.sunfreeware.com">http://www.sunfreeware.com</ulink>, fornisce pacchetti precompilati di Mercurial.</para>
    3.49 +
    3.50 +    </sect2>
    3.51 +
    3.52 +  </sect1>
    3.53 +
    3.54 +  <sect1>
    3.55 +    <title>Per cominciare</title>
    3.56 +
    3.57 +    <para id="x_e">Come prima cosa, useremo il comando <command role="hg-cmd">hg version</command> per verificare che Mercurial sia correttamente installato. L'effettiva informazione sulla versione che il comando stampa non è così importante; ci interessa semplicemente che il comando venga eseguito e che stampi qualsiasi cosa del tutto.</para>
    3.58 +
    3.59 +    &interaction.tour.version;
    3.60 +
    3.61 +    <sect2>
    3.62 +      <title>Aiuto predefinito</title>
    3.63 +
    3.64 +      <para id="x_f">Mercurial fornisce un sistema di aiuto predefinito. Questo è impagabile per quelle volte quando vi trovate bloccati cercando di ricordare come si esegue un comando. Se siete completamente bloccati, eseguite semplicemente <command role="hg-cmd">hg help</command>; il comando stamperà una breve lista di comandi, insieme a una descrizione di quello che ognuno fa. Se chiedete aiuto per un comando specifico (come nell'esempio seguente), verranno stampate informazioni più dettagliate.</para>
    3.65 +
    3.66 +	&interaction.tour.help;
    3.67 +
    3.68 +	<para id="x_10">Per ottenere un livello di dettaglio più impressionante (che di solito non vi servirà) eseguite <command role="hg-cmd">hg help <option role="hg-opt-global">-v</option></command>. L'opzione <option role="hg-opt-global">-v</option> è l'abbreviazione di <option role="hg-opt-global">--verbose</option>, e dice a Mercurial di stampare più informazioni di quello che farebbe di solito.</para>
    3.69 +
    3.70 +    </sect2>
    3.71 +  </sect1>
    3.72 +  <sect1>
    3.73 +    <title>Lavorare con un repository</title>
    3.74 +
    3.75 +    <para id="x_11">In Mercurial, tutto accade all'interno di un <emphasis>repository</emphasis>. Il repository di un progetto contiene tutti i file che <quote>appertengono</quote> a quel progetto, insieme a una registrazione storica dei file del progetto.</para>
    3.76 +
    3.77 +    <para id="x_12">Non c'è niente di particolarmente magico in un repository; è semplicemente un albero di directory nel vostro file system che Mercurial tratta in modo speciale. Potete modificare il nome di un repository o cancellarlo in ogni momento, usando sia la linea di comando sia il vostro file browser.</para>
    3.78 +
    3.79 +    <sect2>
    3.80 +      <title>Fare una copia locale di un repository</title>
    3.81 +
    3.82 +      <para id="x_13"><emphasis>Copiare</emphasis> un repository è in realtà un'operazione un pochino speciale. Pur potendo usare un normale comando per la copia dei file per fare la copia di un repository, è meglio usare un comando predefinito fornito da Mercurial. Questo comando è chiamato <command role="hg-cmd">hg clone</command>, perché crea una copia identica di un repository esistente.</para>
    3.83 +
    3.84 +      &interaction.tour.clone;
    3.85 +
    3.86 +      <para id="x_67c">Uno dei vantaggi nell'usare <command role="hg-cmd">hg clone</command> è che, come potete vedere qui sopra, tale comando ci permette di clonare un repository attraverso la rete. Un altro vantaggio è che si ricorda da dove abbiamo effettuato la copia, il che ci tornerà utile molto presto quando vorremo prelevare nuovi cambiamenti da un altro repository.</para>
    3.87 +
    3.88 +      <para id="x_14">Se la nostra operazione di clonazione ha avuto successo, ora dovremmo avere una directory locale chiamata <filename class="directory">hello</filename>. Questa directory contiene alcuni file.</para>
    3.89 +
    3.90 +      &interaction.tour.ls;
    3.91 +
    3.92 +      <para id="x_15">Questi file hanno lo stesso contenuto e la stessa cronologia nel nostro repository di quelli che hanno nel repository che abbiamo clonato.</para>
    3.93 +
    3.94 +      <para id="x_16">Ogni repository Mercurial è sempre completo, auto-contenuto e indipendente. Contiene la propria copia privata dei file e della cronologia di un progetto. Come abbiamo appena detto, il clone di un repository ricorda la locazione del repository da cui è stato clonato, ma Mercurial non comunicherà con quel repository, o con qualsiasi altro repository, a meno che non siamo noi a chiederlo.</para>
    3.95 +
    3.96 +      <para id="x_17">Per ora, questo significa che siamo liberi di effettuare esperimenti con il nostro repository, sapendo con sicurezza che è un ambiente privato che non influenzerà nessun altro.</para>
    3.97 +
    3.98 +    </sect2>
    3.99 +    <sect2>
   3.100 +      <title>Che cosa contiene un repository?</title>
   3.101 +
   3.102 +      <para id="x_18">Se diamo un'occhiata più dettagliata all'interno di un repository, possiamo vedere che contiene una directory chiamata <filename class="directory">.hg</filename>. Questo è il luogo dove Mercurial tiene tutti i suoi metadati sul repository.</para>
   3.103 +
   3.104 +      &interaction.tour.ls-a;
   3.105 +
   3.106 +      <para id="x_19">Il contenuto della directory <filename class="directory">.hg</filename> e delle sue sottodirectory sono privati per Mercurial. Tutti gli altri file e directory nel repository sono vostri e potete farne ciò che volete.</para>
   3.107 +
   3.108 +      <para id="x_1a">Per introdurre un po' di terminologia, la directory <filename class="directory">.hg</filename> è il repository <quote>reale</quote>, e tutti gli altri file e directory che coesistono con esso si dice che vivano nella <emphasis>directory di lavoro</emphasis>. Un modo facile di ricordare questa distinzione è che il <emphasis>repository</emphasis> contiene la <emphasis>cronologia</emphasis> del progetto, mentre la <emphasis>directory di lavoro</emphasis> contiene una <emphasis>fotografia</emphasis> del vostro progetto in un punto particolare della cronologia.</para>
   3.109 +
   3.110 +    </sect2>
   3.111 +  </sect1>
   3.112 +  <sect1>
   3.113 +    <title>Una panoramica attraverso la cronologia</title>
   3.114 +
   3.115 +    <para id="x_1b">Una delle prime cose che potremmo voler fare con un nuovo repository che non ci è familiare è capire la sua storia. Il comando <command role="hg-cmd">hg log</command> ci dà una vista della cronologia dei cambiamenti nel repository.</para>
   3.116 +
   3.117 +    &interaction.tour.log;
   3.118 +
   3.119 +    <para id="x_1c">Secondo le sue impostazioni predefinite, questo comando stampa un breve paragrafo per ogni cambiamento che è stato registrato nel progetto. Nella terminologia di Mercurial, chiamiamo ognuno di questi eventi registrati un <emphasis>changeset</emphasis>, perché contiene la registrazione dei cambiamenti a diversi file.</para>
   3.120 +
   3.121 +    <para id="x_1d">I campi di una singola registrazione mostrata da <command role="hg-cmd">hg log</command> sono i seguenti.</para>
   3.122 +
   3.123 +    <itemizedlist>
   3.124 +      <listitem><para id="x_1e"><literal>changeset</literal>: questo campo ha il formato di un numero, seguito dal carattere di due punti, seguito da una stringa esadecimale (o <emphasis>hex</emphasis>). Questi sono gli <emphasis>identificatori</emphasis> del changeset. La stringa esadecimale è un identificatore unico: la stessa stringa esadecimale si riferirà sempre allo stesso changeset in ogni copia di questo repository. Il numero è più corto e facile da digitare rispetto alla stringa esadecimale, ma non è unico: lo stesso numero in due differenti cloni di un repository potrebbe identificare changeset differenti.</para>
   3.125 +      </listitem>
   3.126 +      <listitem><para id="x_1f"><literal>user</literal>: l'identità della persona che ha creato il changeset. Questo è un campo libero, ma il più delle volte contiene il nome e l'indirizzo email di una persona.</para></listitem>
   3.127 +      <listitem><para id="x_20"><literal>date</literal>: la data e l'orario a cui il changeset è stato creato, e la zona temporale in cui è stato creato. (La data e l'orario sono locali per quella zona e mostrano il giorno e l'ora per la persona che ha creato il changeset.)</para></listitem>
   3.128 +      <listitem><para id="x_21"><literal>summary</literal>: la prima riga del messaggio di testo che il creatore del changeset ha utilizzato per descrivere il changeset.</para></listitem>
   3.129 +      <listitem>
   3.130 +	<para id="x_67d">Alcuni changeset, come il primo della lista qui sopra, hanno un campo <literal>tag</literal>. Una etichetta è un altro modo di identificare un changeset, dandogli un nome facile da ricordare. (L'etichetta chiamata <literal>tip</literal> è speciale: si riferisce sempre alla modifica più recente nel repository.)</para>
   3.131 +      </listitem>
   3.132 +    </itemizedlist>
   3.133 +
   3.134 +    <para id="x_22">Il testo stampato dalla esecuzione predefinita del comando <command role="hg-cmd">hg log</command> è un semplice riepilogo; in quanto tale, non contiene molti dettagli.</para>
   3.135 +
   3.136 +    <para id="x_23"><xref linkend="fig:tour-basic:history"/> fornisce una rappresentazione grafica della cronologia del repository <filename class="directory">hello</filename>, per rendere un poco più facile vedere qual è la direzione in cui la cronologia si sta <quote>sviluppando</quote>. Ritorneremo a questa figura diverse volte in questo capitolo e nei capitoli che seguono.</para>
   3.137 +
   3.138 +    <figure id="fig:tour-basic:history">
   3.139 +      <title>Rappresentazione grafica della cronologia per il repository <filename class="directory">hello</filename></title>
   3.140 +      <mediaobject>
   3.141 +	<imageobject><imagedata fileref="figs/tour-history.png"/></imageobject>
   3.142 +	<textobject><phrase>XXX add text</phrase></textobject>
   3.143 +      </mediaobject>
   3.144 +    </figure>
   3.145 +
   3.146 +    <sect2>
   3.147 +      <title>Changeset, revisioni e dialoghi con altre persone</title>
   3.148 +
   3.149 +      <para id="x_25">Dato che l'inglese è una lingua notoriamente trasandata e che l'informatica ha una storia consacrata alla confusione terminologica (perché usare un solo termine quando se ne possono usare quattro?), il controllo di revisione ha una varietà di termini ed espressioni per indicare la stessa cosa. Se parlate della cronologia di Mercurial con altre persone, scoprirete che il termine <quote>changeset</quote> è spesso compresso in <quote>change</quote> o (nella sua forma scritta) in <quote>cset</quote>, e talvolta ci si riferisce a un changeset chiamandolo <quote>revisione</quote> oppure <quote>rev</quote>.</para>
   3.150 +
   3.151 +      <para id="x_26">Mentre non ha importanza quale <emphasis>parola</emphasis> voi usiate per riferirvi al concetto di <quote>un changeset</quote>, l'<emphasis>identificatore</emphasis> che usate per riferirvi a <quote>uno <emphasis>specifico</emphasis> changeset</quote> è di grande importanza. Ricordatevi che il campo <literal>changeset</literal> nel riepilogo mostrato da <command role="hg-cmd">hg log</command> identifica un changeset utilizzando sia un numero che una stringa esadecimale.</para>
   3.152 +      <itemizedlist>
   3.153 +	<listitem><para id="x_27">Il numero di revisione è una notazione comoda che è <emphasis>valida solo in quel repository</emphasis>.</para></listitem>
   3.154 +	<listitem><para id="x_28">La stringa esadecimale è l'<emphasis>identificatore permanente e non modificabile</emphasis> che identificherà sempre quell'esatto changeset in <emphasis>qualsiasi</emphasis> copia del repository.</para></listitem>
   3.155 +      </itemizedlist>
   3.156 +
   3.157 +      <para id="x_29">Questa distinzione è importante. Se spedite un'email a qualcuno parlando della <quote>revisione 33</quote>, c'è un'alta probabilità che la loro revisione 33 <emphasis>non sia la stessa</emphasis> della vostra. La ragione per questo è che un numero di revisione dipende dall'ordine in cui i cambiamenti sono stati introdotti in un repository, e non c'è alcuna garanzia che gli stessi cambiamenti siano avvenuti nello stesso ordine in repository differenti. Tre cambiamenti <literal>a,b,c</literal> possono facilmente comparire in un repository come <literal>0,1,2</literal>, mentre in un altro repository come <literal>0,2,1</literal>.</para>
   3.158 +
   3.159 +      <para id="x_2a">Mercurial usa i numeri di revisione puramente come una conveniente abbreviazione. Se avete bisogno di discutere un changeset con qualcuno, o registrare il changeset per qualche altra ragione (per esempio, in un bug report), usate l'identificatore esadecimale.</para>
   3.160 +
   3.161 +    </sect2>
   3.162 +    <sect2>
   3.163 +      <title>Vedere revisioni specifiche</title>
   3.164 +
   3.165 +      <para id="x_2b">Per restringere l'uscita del comando <command role="hg-cmd">hg log</command> a una singola revisione, usate l'opzione <option role="hg-opt-log">-r</option> (o <option role="hg-opt-log">--rev</option>). Potete usare sia un numero di revisione che un identificatore esadecimale, e potete fornire al comando tante revisioni quante ne volete.</para>
   3.166 +
   3.167 +      &interaction.tour.log-r;
   3.168 +
   3.169 +      <para id="x_2c">Se volete vedere la cronologia di diverse revisioni senza dover elencarle tutte, potete usare la <emphasis>notazione di intervallo</emphasis>, che vi permette di esprimere l'idea <quote>Voglio tutte le revisioni tra <literal>abc</literal> e <literal>def</literal> comprese.</quote></para>
   3.170 +      
   3.171 +	&interaction.tour.log.range;
   3.172 +
   3.173 +      <para id="x_2d">Mercurial rispetta anche l'ordine in cui specificate le revisioni, quindi il comando <command role="hg-cmd">hg log -r 2:4</command> stamperà le revisioni 2, 3 e 4, mentre il comando <command role="hg-cmd">hg log -r 4:2</command> stamperà le revisioni 4, 3 e 2.</para>
   3.174 +
   3.175 +    </sect2>
   3.176 +    <sect2>
   3.177 +      <title>Informazioni più dettagliate</title>
   3.178 +
   3.179 +      <para id="x_2e">Mentre le informazioni di riepilogo stampate da <command role="hg-cmd">hg log</command> sono utili se sapete già cosa state cercando, potreste aver bisogno di vedere una descrizione completa del cambiamento, o una lista dei file modificati, se state cercando di capire se il changeset è quello che stavate cercando. L'opzione <option role="hg-opt-global">-v</option> (o <option role="hg-opt-global">--verbose</option>) del comando <command role="hg-cmd">hg log</command> vi fornisce questi dettagli aggiuntivi.</para>
   3.180 +
   3.181 +      &interaction.tour.log-v;
   3.182 +
   3.183 +      <para id="x_2f">Se volete vedere sia la descrizione che il contenuto di un cambiamento, aggiungete l'opzione <option role="hg-opt-log">-p</option> (o <option role="hg-opt-log">--patch</option>). In questo modo verrà mostrato il contenuto del cambiamento sotto forma di <emphasis>unified diff</emphasis> (se non avete mai visto uno unified diff prima d'ora, date un'occhiata a <!--<xref
   3.184 +	  linkend="sec:mq:patch"/>--> FIXME per un'introduzione).</para>
   3.185 +
   3.186 +      &interaction.tour.log-vp;
   3.187 +
   3.188 +      <para id="x_67e">L'opzione <option role="hg-opt-log">-p</option> è tremendamente utile, quindi merita di essere ricordata.</para>
   3.189 +
   3.190 +    </sect2>
   3.191 +  </sect1>
   3.192 +
   3.193 +  <sect1>
   3.194 +    <title>Tutto sulle opzioni dei comandi</title>
   3.195 +
   3.196 +    <para id="x_30">Prendiamoci una piccola pausa dalla nostra esplorazione dei comandi di Mercurial per discutere lo schema del modo in cui quei comandi lavorano; potreste trovarlo utile da ricordare nel prosieguo di questa parnoramica.</para>
   3.197 +
   3.198 +    <para id="x_31">Mercurial adotta un approccio semplice e consistente per gestire le opzioni che potete passare ai comandi. Seuge le convenzioni per le opzioni che sono comuni tra i moderni sistemi Linux e Unix.</para>
   3.199 +
   3.200 +    <itemizedlist>
   3.201 +      <listitem>
   3.202 +	<para id="x_32">Ogni opzione ha un nome lungo. Per esempio, come avete già visto, il comando <command role="hg-cmd">hg log</command> accetta una opzione <option role="hg-opt-log">--rev</option>.</para>
   3.203 +      </listitem>
   3.204 +      <listitem>
   3.205 +	<para id="x_33">La maggior parte delle opzioni hanno anche un nome corto. Invece di <option role="hg-opt-log">--rev</option>, possiamo usare <option role="hg-opt-log">-r</option>. (La ragione per cui alcune opzioni non hanno un nome corto è che le opzioni in questione vengono usate raramente.)</para>
   3.206 +      </listitem>
   3.207 +      <listitem>
   3.208 +	<para id="x_34">Le opzioni lunghe cominciano con due trattini (e.g. <option role="hg-opt-log">--rev</option>), mentre le opzioni corte cominciano con un solo trattino (e.g. <option role="hg-opt-log">-r</option>).</para>
   3.209 +      </listitem>
   3.210 +      <listitem>
   3.211 +	<para id="x_35">Lo schema di denominazione e di utilizzo delle opzioni è consistente attraverso tutti i comandi. Per esempio, ogni comando che vi permette di specificare un identificatore di changeset o un numero di revisione accetta entrambi gli argomenti <option role="hg-opt-log">-r</option> e <option role="hg-opt-log">--rev</option>.</para>
   3.212 +      </listitem>
   3.213 +      <listitem>
   3.214 +	<para id="x_67f">Se state usando le opzioni corte, potete digitare il meno possibile eseguendole insieme. Per esempio, il comando <command role="hg-cmd">hg log -v -p -r 2</command> può essere scritto come <command role="hg-cmd">hg log -vpr2</command>.</para>
   3.215 +      </listitem>
   3.216 +    </itemizedlist>
   3.217 +
   3.218 +    <para id="x_36">Negli esempi attraverso questo libro, di solito uso le opzioni corte invece delle lunghe. Questo riflette semplicemente la mia preferenza, quindi non leggetevi nulla di particolarmente significativo.</para>
   3.219 +
   3.220 +    <para id="x_37">La maggior parte dei comandi che stampano del testo di qualche tipo stamperanno più testo quando gli verrà passata una opzione <option role="hg-opt-global">-v</option> (o <option role="hg-opt-global">--verbose</option>), e meno testo quando gli verrà passata l'opzione <option role="hg-opt-global">-q</option> (o <option role="hg-opt-global">--quiet</option>).</para>
   3.221 +
   3.222 +    <note>
   3.223 +      <title>La consistenza nella denominazione delle opzioni</title>
   3.224 +
   3.225 +      <para id="x_680">Quasi sempre, i comandi Mercurial usano nomi consistenti nelle opzioni per riferirsi agli stessi concetti. Per esempio, se comando ha a che fare con i changeset, questi verranno sempre identificati tramite l'opzione <option role="hg-opt-log">--rev</option> o <option role="hg-opt-log">-r</option>. Questo uso consistente dei nomi delle opzioni rende più facile ricordarsi quali opzioni sono accettate da un particolare comando.</para>
   3.226 +    </note>
   3.227 +
   3.228 +  </sect1>
   3.229 +  <sect1>
   3.230 +    <title>Fare e rivedere cambiamenti</title>
   3.231 +
   3.232 +    <para id="x_38">Ora che sappiamo come ispezionare la cronologia in Mercurial, diamo un'occhiata al modo in cui si effettuano e si esaminano i cambiamenti.</para>
   3.233 +
   3.234 +    <para id="x_39">La prima cosa che faremo è isolare il nostro esperimento in un proprio repository. Usiamo il comando <command role="hg-cmd">hg clone</command>, ma non abbiamo bisogno di clonare il repository remoto. Dato che ne abbiamo già una copia locale, ci basterà clonare quella. Questa operazione è molto più veloce rispetto a una clonazione attraverso la rete, e clonare un repository locale utilizza anche meno spazio su disco nella maggior parte dei casi<footnote>
   3.235 +	<para id="x_681">Il risparmio di spazio su ottiene quando i repository sorgente e destinazione sono sullo stesso filesystem, nel qual caso Mercurial userà hardlink per fare una condivisione copy-on-write dei suoi metadati interni. Se questa spiegazione non significa nulla per voi, non preoccupatevi: ogni cosa avviene in maniera trasparente e automatica, e non avete bisogno di capirla.</para>
   3.236 +	</footnote>.</para>
   3.237 +
   3.238 +    &interaction.tour.reclone;
   3.239 +
   3.240 +    <para id="x_3a">Come nota a margine, è buona pratica mantenere in giro una copia <quote>intatta</quote> di un repository remoto, che potete usare per creare cloni temporanei o sandbox per ogni attività che volete svolgere. Questo vi permette di lavorare su molteplici attività in parallelo, ognuna isolata dalle altre fino a quando non è completa e non siete pronti per integrarla indietro. Dato che i cloni locali sono così economici, non c'è quasi alcuno spreco nel clonare e distruggere repository ogni volta che volete.</para>
   3.241 +
   3.242 +    <para id="x_3b">Nel nostro repository <filename class="directory">my-hello</filename>, abbiamo un file <filename>hello.c</filename> che contiene il classico programma <quote>hello, world</quote>.</para>
   3.243 +
   3.244 +    &interaction.tour.cat1;
   3.245 +
   3.246 +    <para id="x_682">Modifichiamo questo file in modo da fargli stampare una seconda riga.</para>
   3.247 +
   3.248 +    &interaction.tour.cat2;
   3.249 +
   3.250 +    <para id="x_3c">Il comando <command role="hg-cmd">hg status</command> di Mercurial ci dirà quello che Mercurial sa dei file nel repository.</para>
   3.251 +
   3.252 +    &interaction.tour.status;
   3.253 +
   3.254 +    <para id="x_3d">Il comando <command role="hg-cmd">hg status</command> non stampa alcuna informazione per alcuni file, ma una riga che comincia con <quote><literal>M</literal></quote> per <filename>hello.c</filename>. A meno che non glielo chiediate, <command role="hg-cmd">hg status</command> non stamperà alcuna informazione per i file che non sono stati modificati.</para>
   3.255 +
   3.256 +    <para id="x_3e">La <quote><literal>M</literal></quote> indica che Mercurial ha notato che abbiamo modificato il file <filename>hello.c</filename>. Non abbiamo avuto bisogno di <emphasis>informare</emphasis> Mercurial che stavamo per modificare il file prima di cominciare, o che abbiamo modificato il file dopo aver finito. Mercurial è stato in grado di rendersene conto da solo.</para>
   3.257 +
   3.258 +    <para id="x_3f">In qualche modo, è utile sapere che abbiamo modificato <filename>hello.c</filename>, ma potremmo preferire sapere esattamente <emphasis>quali</emphasis> cambiamenti abbiamo apportato. Per fare questo, utilizziamo il comando <command role="hg-cmd">hg diff</command>.</para>
   3.259 +
   3.260 +    &interaction.tour.diff;
   3.261 +
   3.262 +    <tip>
   3.263 +      <title>Capire le patch</title>
   3.264 +
   3.265 +      <para id="x_683">Ricordate di dare un'occhiata a <!--<xref
   3.266 +	  linkend="sec:mq:patch"/>--> FIXME se non sapere come interpretare il risultato del comando eseguito sopra.</para>
   3.267 +    </tip>
   3.268 +  </sect1>
   3.269 +  <sect1>
   3.270 +    <title>Registrare i cambiamenti in un nuovo changeset</title>
   3.271 +
   3.272 +    <para id="x_40">Possiamo modificare i file, compilare e collaudare i nostri cambiamenti, e usare <command role="hg-cmd">hg status</command> and <command
   3.273 +	role="hg-cmd">hg diff</command> per rivedere i nostri cambiamenti fino a quando non  siamo soddisfatti con quello che abbiamo ottenuto e arriviamo a un naturale punto fermo in cui vogliamo registrare il nostro lavoro in un nuovo changeset.</para>
   3.274 +
   3.275 +    <para id="x_41">Il comando <command role="hg-cmd">hg commit</command> ci permette di creare un nuovo changeset. Faremo riferimento a questa operazione con l'espressione <quote>effettuare un commit</quote> oppure con il termine <quote>inserimento</quote>.</para>
   3.276 +
   3.277 +    <sect2>
   3.278 +      <title>Impostare un nome utente</title>
   3.279 +
   3.280 +      <para id="x_42">Quando provate a eseguire <command role="hg-cmd">hg commit</command> per la prima volta, non c'è alcuna garanzia che abbia successo. Mercurial registra il vostro nome e indirizzo con ogni cambiamento che inserite, in modo che più tardi voi e gli altri siate in grado di dire chi ha effettuato ogni cambiamento. Mercurial prova a calcolare automaticamente un nome utente ragionevole da usare per l'inserimento. Proverà ognuno di questi metodi, in questo ordine:</para>
   3.281 +      <orderedlist>
   3.282 +	<listitem><para id="x_43">Se specificate una opzione <option role="hg-opt-commit">-u</option> al comando <command role="hg-cmd">hg commit</command>, seguita da un nome utente, questo nome avrà sempre la precedenza più alta.</para></listitem>
   3.283 +	<listitem><para id="x_44">Se avete impostato la variabile d'ambiente <envar>HGUSER</envar>, questa viene provata successivamente.</para></listitem>
   3.284 +	<listitem><para id="x_45">Se avete creato un file nella vostra directory personale chiamato <filename role="special">.hgrc</filename>, contenente un elemento <envar role="rc-item-ui">username</envar>, quello sarà usato successivamente. Per vedere come dovrebbero apparire i contenuti di questo file, fate riferimento a <xref linkend="sec:tour-basic:username"/> qui sotto.</para></listitem>
   3.285 +	<listitem><para id="x_46">Se avete impostato la variabile di ambiente <envar>EMAIL</envar>, quella verrà usata successivamente.</para></listitem>
   3.286 +	<listitem><para id="x_47">Mercurial interrogherà il vostro sistema per trovare il vostro nome utente locale e il nome della vostra macchina, utilizzandoli poi per costruire un nome utente. Dato che questo risulta spesso in un nome utente che non è molto utile, stamperà un messaggio di avvertimento nel caso sia costretto a ricorrere a questa alternativa.</para></listitem>
   3.287 +      </orderedlist>
   3.288 +      <para id="x_48">Se tutti questi meccanismi falliscono, Mercurial fallirà, stampando un messaggio di errore. In questo caso, non vi permetterà di eseguire il commit fino a quando non avrete impostato il vostro nome utente.</para>
   3.289 +      <para id="x_49">Dovreste considerare la variabile d'ambiente <envar>HGUSER</envar> e l'opzione <option role="hg-opt-commit">-u</option> per il comando <command role="hg-cmd">hg commit</command> come modi per override la selezione predefinita del nome utente da parte di Mercurial. Per l'uso normale, il modo più semplice e robusto per impostare il vostro nome utente è quello di creare un file <filename role="special">.hgrc</filename> file; vedete più oltre per i dettagli.</para>
   3.290 +      <sect3 id="sec:tour-basic:username">
   3.291 +	<title>Creare un file di configurazione per Mercurial</title>
   3.292 +
   3.293 +	<para id="x_4a">Per impostare un nome utente, usate il vostro editor preferito e create un file chiamato <filename role="special">.hgrc</filename> nella vostra directory personale. Mercurial userà questo file per cercare le vostre impostazioni di configurazione personalizzate. Il contenuto iniziale del vostro file<filename role="special">.hgrc</filename> dovrebbe somigliare al seguente.</para>
   3.294 +
   3.295 +	<tip>
   3.296 +	  <title><quote>La directory personale</quote> sotto Windows</title>
   3.297 +
   3.298 +	  <para id="x_716">Quando facciamo riferimento alla vostra directory perosnale, in una installazione italiana di Windows essa di solito corrisponde a una cartella chiamata con il vostro nome utente che si trova in <filename>C:\Documents and Settings</filename>. Potete scoprire l'esatto nome della vostra directory personale aprendo una finestra del prompt dei comandi e lanciando il comando seguente.</para>
   3.299 +
   3.300 +	  <screen><prompt>C:\></prompt> <userinput>echo %UserProfile%</userinput></screen>
   3.301 +	</tip>
   3.302 +
   3.303 +	<programlisting># Questo è un file di configurazione per Mercurial.
   3.304 +[ui]
   3.305 +username = Nome Cognome &lt;indirizzo.email@example.net&gt;</programlisting>
   3.306 +
   3.307 +	<para id="x_4b">La riga <quote><literal>[ui]</literal></quote> comincia una <emphasis>sezione</emphasis> del file di configurazione, così potete leggere la riga <quote><literal>username = ...</literal></quote> con il significato di <quote>imposta il valore dell'elemento <literal>username</literal> nella sezione <literal>ui</literal></quote>. Una sezione continua fino a quando comincia una nuova sezione o fino alla fine del file. Mercurial ignora le righe vuote e tratta il testo di ogni riga che comincia con il carattere <quote><literal>#</literal></quote> come un commento.</para>
   3.308 +      </sect3>
   3.309 +
   3.310 +      <sect3>
   3.311 +	<title>Scegliere un nome utente</title>
   3.312 +
   3.313 +	<para id="x_4c">Potete usare qualsiasi testo che volete come valore dell'elemento di configurazione <literal>username</literal>, dato che questa informazione serve per essere letta da altre persone, ma non verrà interpretata da Mercurial. La convenzione seguita dalla maggior parte delle persone è quella di usare il loro nome e indirizzo email, come nell'esempio precedente.</para>
   3.314 +	<note>
   3.315 +	  <para id="x_4d">Il server web predefinito di Mercurial offusca gli indirizzi email, per rendere la vita difficile agli strumenti che gli spammer usano per raccogliere indirizzi email. Questo riduce la possibilità che cominciate a ricevere un maggior numero di spazzatura nella vostra casella email se pubblicate un repository Mercurial sul web.</para></note>
   3.316 +      </sect3>
   3.317 +    </sect2>
   3.318 +    <sect2>
   3.319 +      <title>Scrivere un messaggio di commit</title>
   3.320 +
   3.321 +      <para id="x_4e">Quando inseriamo un cambiamento, Mercurial apre un editor di testo per farci scrivere un messaggio allo scopo di descrivere le modifiche che abbiamo effettuato in questo changeset. Questo viene chiamato <emphasis>messaggio di commit</emphasis>. Verrà registrato per i lettori di quello che abbiamo fatto e perché, e verrà stampato da <command role="hg-cmd">hg log</command> dopo che il commit sarà terminato.</para>
   3.322 +
   3.323 +       &interaction.tour.commit;
   3.324 +
   3.325 +      <para id="x_4f">L'editor aperto dal comando <command role="hg-cmd">hg commit</command> conterrà una o due righe vuote, seguite da un certo numero di righe che cominciano con <quote><literal>HG:</literal></quote>.</para>
   3.326 +
   3.327 +    <programlisting>
   3.328 +Potete digitare qui il vostro messaggio di commit.
   3.329 +
   3.330 +HG: Inserite un messaggio di commit. Le righe che cominciano con 'HG:' verranno rimosse.
   3.331 +HG: --
   3.332 +HG: utente: Bryan O'Sullivan &lt;bos@serpentine.com&gt;
   3.333 +HG: ramo 'default'
   3.334 +HG: modificato hello.c</programlisting>
   3.335 +
   3.336 +      <para id="x_50">Mercurial ignora le righe che cominciano con <quote><literal>HG:</literal></quote> e le usa solamente per dirci a quali file appartengono i cambiamenti che sta per registrare. Modificare o cancellare quelle righe non ha alcun effetto.</para>
   3.337 +    </sect2>
   3.338 +    <sect2>
   3.339 +      <title>Scrivere un buon messaggio di commit</title>
   3.340 +
   3.341 +      <para id="x_51">Dato che <command role="hg-cmd">hg log</command> stampa per default solo la prima riga del messaggio di commit, è meglio scrivere un messaggio di commit la cui prima riga stia in piedi da sola. Ecco un esempio reale di un messaggio di commit che <emphasis>non</emphasis> segue questa linea guida, e quindi presenta un riepilogo che non è comprensibile.</para>
   3.342 +
   3.343 +      <programlisting>
   3.344 +changeset:   73:584af0e231be
   3.345 +user:        Persona Censurata &lt;persona.censurata@example.org&gt;
   3.346 +date:        Tue Sep 26 21:37:07 2006 -0700
   3.347 +summary:     incluso buildmeister/commondef. Aggiunti gli export.</programlisting>
   3.348 +
   3.349 +      <para id="x_52">Per quanto riguarda il resto del contenuto del messaggio di commit, non ci sono regole ferree. Lo stesso Mercurial non interpreta o si occupa del contenuto del messaggio di commit, sebbene il vostro progetto possa avere politiche che obbligano a un certo tipo di formattazione.</para>
   3.350 +      <para id="x_53">La mia personale preferenza va a corti, ma informativi, messaggi di commit che mi dicano qualcosa che non sia in grado di capite attraverso una veloce occhiata al risultato del comando <command role="hg-cmd">hg log --patch</command>.</para>
   3.351 +      <para id="x_55">Se eseguiamo il comando <command role="hg-cmd">hg commit</command> senza argomenti, registra tutti i cambiamenti che abbiamo fatto, come riportati dai comandi <command role="hg-cmd">hg status</command> e <command role="hg-cmd">hg diff</command>.</para>
   3.352 +
   3.353 +      <note>
   3.354 +	<title>Una sopresa per gli utenti Subversion</title>
   3.355 +
   3.356 +	<para id="x_717">Come altri comandi Mercurial, se non forniamo nomi espliciti al comando <command role="hg-cmd">hg commit</command>, esso opererà su tutta la directory di lavoro del repository. Fate attenzione a questo se venite dal mondo Subversion o CVS, perché potreste aspettarvi di operare solo nella directory corrente che state visitando e nelle sue sottodirectory.</para>
   3.357 +      </note>
   3.358 +    </sect2>
   3.359 +
   3.360 +    <sect2>
   3.361 +      <title>Abortire un commit</title>
   3.362 +
   3.363 +      <para id="x_54">Se decidete di non voler effettuare il commit mentre state scrivendo il messaggio di commit, vi basta uscire dal vostro editor senza salvare il file che sta modificando. Questo eviterà di far succedere alcunché al repository e alla directory di lavoro.</para>
   3.364 +    </sect2>
   3.365 +
   3.366 +    <sect2>
   3.367 +      <title>Ammirare la nostra nuova opera</title>
   3.368 +
   3.369 +      <para id="x_56">Una volta che abbiamo terminato il commit, possiamo usare il comando <command role="hg-cmd">hg tip</command> per visualizzare il changeset che abbiamo appena creato. Questo comando produce una stampa identica a quella del comando <command role="hg-cmd">hg log</command>, ma visualizza solamente la revisione più recente nel repository.</para>
   3.370 +
   3.371 +      &interaction.tour.tip;
   3.372 +
   3.373 +      <para id="x_57">Ci riferiremo alla revisione più recente nel repository come alla <emphasis>revisione di punta</emphasis>, o semplicemente la <emphasis>punta</emphasis>.</para>
   3.374 +
   3.375 +      <para id="x_684">A proposito, il comando <command role="hg-cmd">hg tip</command> accetta molte delle stesse opzioni viste per <command role="hg-cmd">hg log</command>, quindi l'opzione <option role="hg-opt-global">-v</option> nell'esempio precedente chiede di <quote>essere verboso</quote> e l'opzione <option role="hg-opt-tip">-p</option> specifica di <quote>stampare una patch</quote>. L'uso di <option role="hg-opt-tip">-p</option> per stampare le patch è un altro esempio della denominazione consistente che avevamo menzionato in precedenza.</para>
   3.376 +    </sect2>
   3.377 +  </sect1>
   3.378 +
   3.379 +  <sect1>
   3.380 +    <title>Condividere i cambiamenti</title>
   3.381 +
   3.382 +    <para id="x_58">Abbiamo menzionato in precedenza che i repository Mercurial sono auto-contenuti. Questo significa che il cambiamento che abbiamo appena creato esistono solo nel nostro repository <filename class="directory">my-hello</filename>. Vediamo alcuni modi in cui possiamo propagare questa modifica verso altri repository.</para>
   3.383 +
   3.384 +    <sect2 id="sec:tour:pull">
   3.385 +      <title>Estrarre i cambiamenti da altri repository</title>
   3.386 +
   3.387 +      <para id="x_59">Per cominciare, cloniamo il nostro repository <filename class="directory">hello</filename> originale, che non contiene la modifica che abbiamo appena introdotto. Chiameremo <filename class="directory">hello-pull</filename> il nostro repository temporaneo.</para>
   3.388 +
   3.389 +      &interaction.tour.clone-pull;
   3.390 +
   3.391 +      <para id="x_5a">Useremo il comando <command role="hg-cmd">hg pull</command> per portare i cambiamenti dal repository <filename class="directory">my-hello</filename> al repository <filename class="directory">hello-pull</filename>. Tuttavia, estrarre cambiamenti sconosciuti alla cieca da un repository è una prospettiva che può incutere qualche timore. Mercurial fornisce il comando <command role="hg-cmd">hg incoming</command> per elencare quali cambiamenti <emphasis>verrebbero</emphasis> estratti dal repository, senza effettivamente procedere con l'operazione.</para>
   3.392 +
   3.393 +      &interaction.tour.incoming;
   3.394 +
   3.395 +      <para id="x_5c">Portare i cambiamenti in un repository è semplicemente una questione di eseguire il comando <command role="hg-cmd">hg pull</command>, e opzionalmente dirgli da quale repository eseguire l'estrazione.</para>
   3.396 +
   3.397 +      &interaction.tour.pull;
   3.398 +
   3.399 +      <para id="x_5d">Come potete vedere se confrontate il risultato di <command role="hg-cmd">hg tip</command> prima e dopo, abbiamo estratto i cambiamenti nel nostro repository. Tuttavia, Mercurial separa l'operazione di estrazione dei cambiamenti da quella di aggiornamento della directory di lavoro. Rimane ancora un passo da fare prima di poter vedere i cambiamenti appena estratti apparire nella directory di lavoro.</para>
   3.400 +
   3.401 +      <tip>
   3.402 +	<title>Estrarre cambiamenti specifici</title>
   3.403 +
   3.404 +	<para id="x_5b">&Egrave; possibile che a causa del ritardo tra l'esecuzione di <command role="hg-cmd">hg incoming</command> e <command role="hg-cmd">hg pull</command>, possiate non vedere tutti i changeset che verranno portati dall'altro repository. Supponete di estrarre cambiamenti da un repository che si trovi in rete da qualche parte. Mentre state guardando al risultato di <command role="hg-cmd">hg incoming</command>, e prima che riusciate a estrarre quei cambiamenti, qualcuno potrebbe aver inserito qualcosa nel repository remoto. Questo significa che è possibile estrarre più cambiamenti di quelil che avete visto tramite <command role="hg-cmd">hg incoming</command>.</para>
   3.405 +
   3.406 +	<para id="x_718">Se volete solamente estrarre quei precisi cambiamenti che sono stati elencati da <command role="hg-cmd">hg incoming</command>, o avete qualche altra ragione per estrarre un sottinsieme dei cambiamenti, è sufficiente identificare il cambiamento che volete estrarre tramite il suo identificatore di changeset, e.g. <command>hg pull -r7e95bb</command>.</para>
   3.407 +      </tip>
   3.408 +    </sect2>
   3.409 +
   3.410 +    <sect2>
   3.411 +      <title>Aggiornare la directory di lavoro</title>
   3.412 +
   3.413 +      <para id="x_5e">Finora abbiamo glissato sulla relazione tra il repository e la sua directory di lavoro. Il comando <command role="hg-cmd">hg pull</command> che abbiamo eseguito in <xref linkend="sec:tour:pull"/> ha portato i cambiamenti nel repository, ma se controlliamo, non c'è alcun segno di quei cambiamenti nella directory di lavoro. Questo accade perché <command role="hg-cmd">hg pull</command> di default non tocca la directory di lavoro. Invece, dobbiamo usare il comando <command role="hg-cmd">hg update</command> per fare questo.</para>
   3.414 +
   3.415 +      &interaction.tour.update;
   3.416 +
   3.417 +      <para id="x_5f">Potrebbe sembrare un po' strano che <command role="hg-cmd">hg pull</command> non aggiorni automaticamente la directory di lavoro, ma c'è una buona ragione per questo: potete usare <command role="hg-cmd">hg update</command> per aggionrare la directory di lavoro allo stato in cui era in <emphasis>qualsiasi revisione</emphasis> contenuta nella cronologia del repository. Se la vostra directory di lavoro fosse stata aggiornata a una vecchia revisione&emdash;per cercare l'origine di un bug, diciamo&emdash;e il comando <command role="hg-cmd">hg pull</command> da voi eseguito aggiornasse la directory di lavoro a una nuova revisione, potreste non esserne terribilmente felici.</para>
   3.418 +
   3.419 +      <para id="x_60">Dato che la sequenza di estrazione e aggiornamento è così comune, Mercurial vi permette di combinare le due operazioni passando l'opzione <option role="hg-opt-pull">-u</option> al comando <command role="hg-cmd">hg pull</command>.</para>
   3.420 +
   3.421 +      <para id="x_61">Se tornate indietro a osservare il testo visualizzato dal comando <command role="hg-cmd">hg pull</command> in <xref linkend="sec:tour:pull"/> quando lo abbiamo eseguito senza l'opzione <option role="hg-opt-pull">-u</option>, potete vedere che ha stampato un utile promemoria per ricordarci che dobbiamo effettuare un passo esplicito per aggiornare la directory di lavoro.</para>
   3.422 +
   3.423 +      <para id="x_62">Per scoprire a quale revisione è aggiornata la directory di lavoro, usate il comando <command role="hg-cmd">hg parents</command>.</para>
   3.424 +
   3.425 +      &interaction.tour.parents;
   3.426 +
   3.427 +      <para id="x_63">Se tornate indietro a guardare <xref
   3.428 +	  linkend="fig:tour-basic:history"/>, vedrete che ogni changeset è collegato da frecce. Il nodo <emphasis>da</emphasis> cui la freccia parte in ogni caso è un genitore, e il nodo <emphasis>a</emphasis> cui la freccia arriva è il suo figlio. La directory di lavoro ha un genitore esattamente nello stesso modo; questo è il changeset che la directory di lavoro contiene al momento.</para>
   3.429 +
   3.430 +      <para id="x_64">Per aggiornare la directory di lavoro a una particolare revisione, fornite un numero di revisione o un identificatore di changeset al comando <command role="hg-cmd">hg update</command>.</para>
   3.431 +
   3.432 +      &interaction.tour.older;
   3.433 +
   3.434 +      <para id="x_65">Se omettete una revisione esplicita, <command role="hg-cmd">hg update</command> effettuerà l'aggiornamento alla revisione più recente (la tip revision), come mostrato nella seconda chiamata a <command role="hg-cmd">hg update</command> nell'esempio precedente.</para>
   3.435 +    </sect2>
   3.436 +
   3.437 +    <sect2>
   3.438 +      <title>Pubblicare i cambiamenti in un altro repository</title>
   3.439 +
   3.440 +      <para id="x_66">Mercurial vi permette di spingere i vostri cambiamenti in un altro repository dal repository che state visitando in un dato momento. Come con l'esempio del comando <command role="hg-cmd">hg pull</command> illustrato sopra, creeremo un repository temporaneo in cui spingere i nostri cambiamenti.</para>
   3.441 +
   3.442 +      &interaction.tour.clone-push;
   3.443 +
   3.444 +      <para id="x_67">Il comando <command role="hg-cmd">hg outgoing</command> ci dice quali cambiamenti verrebbero spinti in un altro repository.</para>
   3.445 +
   3.446 +      &interaction.tour.outgoing;
   3.447 +
   3.448 +      <para id="x_68">E il comando <command role="hg-cmd">hg push</command> esegue l'effettiva spinta.</para>
   3.449 +
   3.450 +      &interaction.tour.push;
   3.451 +
   3.452 +      <para id="x_69">Come con <command role="hg-cmd">hg pull</command>, il comando <command role="hg-cmd">hg push</command> non aggiorna la directory di lavoro nel repository verso il quale sta spingendo i cambiamenti. Diversamente da <command role="hg-cmd">hg pull</command>, <command role="hg-cmd">hg push</command> non fornisce una opzione <literal>-u</literal> che aggiorni la directory di lavoro dell'altro repository. Questa asimmetria è voluta: il repository verso il quale stiamo spingendo potrebbe essere su un server remoto e condiviso tra molte persone. Se dovessimo aggiornare la sua directory di lavoro mentre qualcuno ci sta lavorando, il loro lavoro sarebbe rovinato.</para>
   3.453 +
   3.454 +      <para id="x_6a">Cosa succede se proviamo a estrarre o spingere cambiamenti e il repository di destinazione contiene già quei cambiamenti? Nulla di particolarmente eccitante.</para>
   3.455 +
   3.456 +      &interaction.tour.push.nothing;
   3.457 +    </sect2>
   3.458 +
   3.459 +    <sect2>
   3.460 +      <title>Locazioni predefinite</title>
   3.461 +
   3.462 +      <para id="x_719">Quando cloniamo un repository, Mercurial registra la locazione del repository che abbiamo clonato nel file <filename>.hg/hgrc</filename> del nuovo repository. Se non forniamo una locazione al comando <command>hg pull</command> o al comando <command>hg push</command>, questi comandi useranno quella locazione come impostazione predefinita. Anche i comandi <command>hg incoming</command> e <command>hg outgoing</command> si comporteranno allo stesso modo.</para>
   3.463 +
   3.464 +      <para id="x_71a">Se aprite il file <filename>.hg/hgrc</filename> di un repository con un editor di testo, vedrete contenuti simili ai seguenti.</para>
   3.465 +
   3.466 +      <programlisting>[paths]
   3.467 +default = http://www.selenic.com/repo/hg</programlisting>
   3.468 +
   3.469 +      <para id="x_71b">&Egrave; possibile&emdash;e spesso utile&emdash;impostare locazioni differenti per <command>hg push</command> e <command>hg outgoing</command> rispetto a quelle per <command>hg pull</command> e <command>hg incoming</command>. Possiamo fare questo aggiungendo un elemento <literal>default-push</literal> alla sezione <literal>[paths]</literal> del file <filename>.hg/hgrc</filename>, nel modo seguente.</para>
   3.470 +
   3.471 +      <programlisting>[paths]
   3.472 +default = http://www.selenic.com/repo/hg
   3.473 +default-push = http://hg.example.com/hg</programlisting>
   3.474 +    </sect2>
   3.475 +
   3.476 +    <sect2>
   3.477 +      <title>Condividere i cambiamenti attraverso la rete</title>
   3.478 +
   3.479 +      <para id="x_6b">I comandi che abbiamo trattato nelle precedenti sezioni non si limitano a lavorare con repository locali. Ogni comando funziona esattamente allo stesso modo attraverso una connessione di rete quando gli viene passato un URL invece di un percorso locale.</para>
   3.480 +	
   3.481 +      &interaction.tour.outgoing.net;
   3.482 +
   3.483 +      <para id="x_6c">In questo esempio, possiamo vedere quali cambiamenti potremmo spingere sul repository remoto, ma il repository non è comprensibilmente impostato per lasciare che gli utenti anonimi vi spingano alcunché.</para>
   3.484 +
   3.485 +      &interaction.tour.push.net;
   3.486 +    </sect2>
   3.487 +  </sect1>
   3.488 +
   3.489 +  <sect1>
   3.490 +    <title>Cominciare un nuovo progetto</title>
   3.491 +
   3.492 +    <para id="x_71c">&Egrave; altrettanto facile cominciare un nuovo progetto che lavorare su un progetto esistente. Il comando <command>hg init</command> crea un nuovo repository Mercurial vuoto.</para>
   3.493 +
   3.494 +    &interaction.ch01-new.init;
   3.495 +
   3.496 +    <para id="x_71d">Questo crea semplicemente un repository chiamato <filename>myproject</filename> nella directory corrente.</para>
   3.497 +
   3.498 +    &interaction.ch01-new.ls;
   3.499 +
   3.500 +    <para id="x_71e">Possiamo dire che <filename>myproject</filename> è un repository Mercurial perché contiene una directory <filename>.hg</filename>.</para>
   3.501 +
   3.502 +    &interaction.ch01-new.ls2;
   3.503 +
   3.504 +    <para id="x_71f">Se vogliamo aggiungere alcuni file preesistenti al repository, possiamo copiarveli e dire a Mercurial di cominciare a tenerne traccia utilizzando il comando <command>hg add</command>.</para>
   3.505 +
   3.506 +    &interaction.ch01-new.add;
   3.507 +
   3.508 +    <para id="x_720">Una volta che siamo soddisfatti del corretto aspetto del nostro progetto, possiamo effettuare il commit dei nostri cambiamenti.</para>
   3.509 +
   3.510 +    &interaction.ch01-new.commit;
   3.511 +
   3.512 +    <para id="x_721">Ci vogliono solo pochi momenti per cominciare a usare Mercurial su un nuovo progetto, e questo è parte del suo fascino. Il controllo di revisione è diventato facile da impiegare anche per i progetti più piccoli per i quali non lo avremmo preso in considerazione se avessimo dovuto usare uno strumento più complicato.</para>
   3.513 +  </sect1>
   3.514 +</chapter>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/it/examples/auto-snippets.xml	Sun Jun 14 17:33:01 2009 +0200
     4.3 @@ -0,0 +1,276 @@
     4.4 +<!ENTITY ch06-apache-config.lst SYSTEM "results/ch06-apache-config.lst.lxo">
     4.5 +<!ENTITY ch09-check_whitespace.py.lst SYSTEM "results/ch09-check_whitespace.py.lst.lxo">
     4.6 +<!ENTITY ch10-bugzilla-config.lst SYSTEM "results/ch10-bugzilla-config.lst.lxo">
     4.7 +<!ENTITY ch10-notify-config-mail.lst SYSTEM "results/ch10-notify-config-mail.lst.lxo">
     4.8 +<!ENTITY ch10-notify-config.lst SYSTEM "results/ch10-notify-config.lst.lxo">
     4.9 +<!ENTITY interaction.backout.init SYSTEM "results/backout.init.lxo">
    4.10 +<!ENTITY interaction.backout.manual.backout SYSTEM "results/backout.manual.backout.lxo">
    4.11 +<!ENTITY interaction.backout.manual.cat SYSTEM "results/backout.manual.cat.lxo">
    4.12 +<!ENTITY interaction.backout.manual.clone SYSTEM "results/backout.manual.clone.lxo">
    4.13 +<!ENTITY interaction.backout.manual.heads SYSTEM "results/backout.manual.heads.lxo">
    4.14 +<!ENTITY interaction.backout.manual.log SYSTEM "results/backout.manual.log.lxo">
    4.15 +<!ENTITY interaction.backout.manual.merge SYSTEM "results/backout.manual.merge.lxo">
    4.16 +<!ENTITY interaction.backout.manual.parents SYSTEM "results/backout.manual.parents.lxo">
    4.17 +<!ENTITY interaction.backout.non-tip.backout SYSTEM "results/backout.non-tip.backout.lxo">
    4.18 +<!ENTITY interaction.backout.non-tip.cat SYSTEM "results/backout.non-tip.cat.lxo">
    4.19 +<!ENTITY interaction.backout.non-tip.clone SYSTEM "results/backout.non-tip.clone.lxo">
    4.20 +<!ENTITY interaction.backout.simple SYSTEM "results/backout.simple.lxo">
    4.21 +<!ENTITY interaction.backout.simple.log SYSTEM "results/backout.simple.log.lxo">
    4.22 +<!ENTITY interaction.bisect.commits SYSTEM "results/bisect.commits.lxo">
    4.23 +<!ENTITY interaction.bisect.help SYSTEM "results/bisect.help.lxo">
    4.24 +<!ENTITY interaction.bisect.init SYSTEM "results/bisect.init.lxo">
    4.25 +<!ENTITY interaction.bisect.search.bad-init SYSTEM "results/bisect.search.bad-init.lxo">
    4.26 +<!ENTITY interaction.bisect.search.good-init SYSTEM "results/bisect.search.good-init.lxo">
    4.27 +<!ENTITY interaction.bisect.search.init SYSTEM "results/bisect.search.init.lxo">
    4.28 +<!ENTITY interaction.bisect.search.mytest SYSTEM "results/bisect.search.mytest.lxo">
    4.29 +<!ENTITY interaction.bisect.search.reset SYSTEM "results/bisect.search.reset.lxo">
    4.30 +<!ENTITY interaction.bisect.search.rest SYSTEM "results/bisect.search.rest.lxo">
    4.31 +<!ENTITY interaction.bisect.search.step1 SYSTEM "results/bisect.search.step1.lxo">
    4.32 +<!ENTITY interaction.bisect.search.step2 SYSTEM "results/bisect.search.step2.lxo">
    4.33 +<!ENTITY interaction.branch-named.branch SYSTEM "results/branch-named.branch.lxo">
    4.34 +<!ENTITY interaction.branch-named.branches SYSTEM "results/branch-named.branches.lxo">
    4.35 +<!ENTITY interaction.branch-named.commit SYSTEM "results/branch-named.commit.lxo">
    4.36 +<!ENTITY interaction.branch-named.create SYSTEM "results/branch-named.create.lxo">
    4.37 +<!ENTITY interaction.branch-named.foo-commit SYSTEM "results/branch-named.foo-commit.lxo">
    4.38 +<!ENTITY interaction.branch-named.merge SYSTEM "results/branch-named.merge.lxo">
    4.39 +<!ENTITY interaction.branch-named.parents SYSTEM "results/branch-named.parents.lxo">
    4.40 +<!ENTITY interaction.branch-named.rebranch SYSTEM "results/branch-named.rebranch.lxo">
    4.41 +<!ENTITY interaction.branch-named.status SYSTEM "results/branch-named.status.lxo">
    4.42 +<!ENTITY interaction.branch-named.update-bar SYSTEM "results/branch-named.update-bar.lxo">
    4.43 +<!ENTITY interaction.branch-named.update-nothing SYSTEM "results/branch-named.update-nothing.lxo">
    4.44 +<!ENTITY interaction.branch-named.update-switchy SYSTEM "results/branch-named.update-switchy.lxo">
    4.45 +<!ENTITY interaction.branch-repo.bugfix SYSTEM "results/branch-repo.bugfix.lxo">
    4.46 +<!ENTITY interaction.branch-repo.clone SYSTEM "results/branch-repo.clone.lxo">
    4.47 +<!ENTITY interaction.branch-repo.merge SYSTEM "results/branch-repo.merge.lxo">
    4.48 +<!ENTITY interaction.branch-repo.new SYSTEM "results/branch-repo.new.lxo">
    4.49 +<!ENTITY interaction.branch-repo.pull SYSTEM "results/branch-repo.pull.lxo">
    4.50 +<!ENTITY interaction.branch-repo.tag SYSTEM "results/branch-repo.tag.lxo">
    4.51 +<!ENTITY interaction.branching.clone SYSTEM "results/branching.clone.lxo">
    4.52 +<!ENTITY interaction.branching.init SYSTEM "results/branching.init.lxo">
    4.53 +<!ENTITY interaction.branching.main SYSTEM "results/branching.main.lxo">
    4.54 +<!ENTITY interaction.branching.merge SYSTEM "results/branching.merge.lxo">
    4.55 +<!ENTITY interaction.branching.stable SYSTEM "results/branching.stable.lxo">
    4.56 +<!ENTITY interaction.branching.tag SYSTEM "results/branching.tag.lxo">
    4.57 +<!ENTITY interaction.branching.update SYSTEM "results/branching.update.lxo">
    4.58 +<!ENTITY interaction.ch01-new.add SYSTEM "results/ch01-new.add.lxo">
    4.59 +<!ENTITY interaction.ch01-new.commit SYSTEM "results/ch01-new.commit.lxo">
    4.60 +<!ENTITY interaction.ch01-new.init SYSTEM "results/ch01-new.init.lxo">
    4.61 +<!ENTITY interaction.ch01-new.ls SYSTEM "results/ch01-new.ls.lxo">
    4.62 +<!ENTITY interaction.ch01-new.ls2 SYSTEM "results/ch01-new.ls2.lxo">
    4.63 +<!ENTITY interaction.ch02-rename.alice SYSTEM "results/ch02-rename.alice.lxo">
    4.64 +<!ENTITY interaction.ch02-rename.bob SYSTEM "results/ch02-rename.bob.lxo">
    4.65 +<!ENTITY interaction.ch02-rename.clone SYSTEM "results/ch02-rename.clone.lxo">
    4.66 +<!ENTITY interaction.ch02-rename.clone2 SYSTEM "results/ch02-rename.clone2.lxo">
    4.67 +<!ENTITY interaction.ch02-rename.init SYSTEM "results/ch02-rename.init.lxo">
    4.68 +<!ENTITY interaction.ch02-rename.merge SYSTEM "results/ch02-rename.merge.lxo">
    4.69 +<!ENTITY interaction.ch02-rename.merge2 SYSTEM "results/ch02-rename.merge2.lxo">
    4.70 +<!ENTITY interaction.ch02-rename.status SYSTEM "results/ch02-rename.status.lxo">
    4.71 +<!ENTITY interaction.ch02-rename.status2 SYSTEM "results/ch02-rename.status2.lxo">
    4.72 +<!ENTITY interaction.ch04-diff.chmod SYSTEM "results/ch04-diff.chmod.lxo">
    4.73 +<!ENTITY interaction.ch04-diff.chmod.git SYSTEM "results/ch04-diff.chmod.git.lxo">
    4.74 +<!ENTITY interaction.ch04-diff.rename.basic SYSTEM "results/ch04-diff.rename.basic.lxo">
    4.75 +<!ENTITY interaction.ch04-diff.rename.git SYSTEM "results/ch04-diff.rename.git.lxo">
    4.76 +<!ENTITY interaction.ch04-rename.basic SYSTEM "results/ch04-rename.basic.lxo">
    4.77 +<!ENTITY interaction.ch04-resolve.cifail SYSTEM "results/ch04-resolve.cifail.lxo">
    4.78 +<!ENTITY interaction.ch04-resolve.export SYSTEM "results/ch04-resolve.export.lxo">
    4.79 +<!ENTITY interaction.ch04-resolve.heads SYSTEM "results/ch04-resolve.heads.lxo">
    4.80 +<!ENTITY interaction.ch04-resolve.init SYSTEM "results/ch04-resolve.init.lxo">
    4.81 +<!ENTITY interaction.ch04-resolve.left SYSTEM "results/ch04-resolve.left.lxo">
    4.82 +<!ENTITY interaction.ch04-resolve.list SYSTEM "results/ch04-resolve.list.lxo">
    4.83 +<!ENTITY interaction.ch04-resolve.merge SYSTEM "results/ch04-resolve.merge.lxo">
    4.84 +<!ENTITY interaction.ch04-resolve.pull SYSTEM "results/ch04-resolve.pull.lxo">
    4.85 +<!ENTITY interaction.ch04-resolve.right SYSTEM "results/ch04-resolve.right.lxo">
    4.86 +<!ENTITY interaction.ch09-hook.ws.better SYSTEM "results/ch09-hook.ws.better.lxo">
    4.87 +<!ENTITY interaction.ch09-hook.ws.simple SYSTEM "results/ch09-hook.ws.simple.lxo">
    4.88 +<!ENTITY interaction.ch10-multiline.go SYSTEM "results/ch10-multiline.go.lxo">
    4.89 +<!ENTITY interaction.ch10-multiline.orig.go SYSTEM "results/ch10-multiline.orig.go.lxo">
    4.90 +<!ENTITY interaction.ch11-qdelete.convert SYSTEM "results/ch11-qdelete.convert.lxo">
    4.91 +<!ENTITY interaction.ch11-qdelete.go SYSTEM "results/ch11-qdelete.go.lxo">
    4.92 +<!ENTITY interaction.ch11-qdelete.import SYSTEM "results/ch11-qdelete.import.lxo">
    4.93 +<!ENTITY interaction.cmdref.diff-p SYSTEM "results/cmdref.diff-p.lxo">
    4.94 +<!ENTITY interaction.daily.copy.after SYSTEM "results/daily.copy.after.lxo">
    4.95 +<!ENTITY interaction.daily.copy.cat SYSTEM "results/daily.copy.cat.lxo">
    4.96 +<!ENTITY interaction.daily.copy.clone SYSTEM "results/daily.copy.clone.lxo">
    4.97 +<!ENTITY interaction.daily.copy.copy SYSTEM "results/daily.copy.copy.lxo">
    4.98 +<!ENTITY interaction.daily.copy.dir-dest SYSTEM "results/daily.copy.dir-dest.lxo">
    4.99 +<!ENTITY interaction.daily.copy.dir-src SYSTEM "results/daily.copy.dir-src.lxo">
   4.100 +<!ENTITY interaction.daily.copy.dir-src-dest SYSTEM "results/daily.copy.dir-src-dest.lxo">
   4.101 +<!ENTITY interaction.daily.copy.init SYSTEM "results/daily.copy.init.lxo">
   4.102 +<!ENTITY interaction.daily.copy.merge SYSTEM "results/daily.copy.merge.lxo">
   4.103 +<!ENTITY interaction.daily.copy.orig.after SYSTEM "results/daily.copy.orig.after.lxo">
   4.104 +<!ENTITY interaction.daily.copy.orig.cat SYSTEM "results/daily.copy.orig.cat.lxo">
   4.105 +<!ENTITY interaction.daily.copy.orig.clone SYSTEM "results/daily.copy.orig.clone.lxo">
   4.106 +<!ENTITY interaction.daily.copy.orig.copy SYSTEM "results/daily.copy.orig.copy.lxo">
   4.107 +<!ENTITY interaction.daily.copy.orig.dir-dest SYSTEM "results/daily.copy.orig.dir-dest.lxo">
   4.108 +<!ENTITY interaction.daily.copy.orig.dir-src SYSTEM "results/daily.copy.orig.dir-src.lxo">
   4.109 +<!ENTITY interaction.daily.copy.orig.dir-src-dest SYSTEM "results/daily.copy.orig.dir-src-dest.lxo">
   4.110 +<!ENTITY interaction.daily.copy.orig.init SYSTEM "results/daily.copy.orig.init.lxo">
   4.111 +<!ENTITY interaction.daily.copy.orig.merge SYSTEM "results/daily.copy.orig.merge.lxo">
   4.112 +<!ENTITY interaction.daily.copy.orig.other SYSTEM "results/daily.copy.orig.other.lxo">
   4.113 +<!ENTITY interaction.daily.copy.orig.simple SYSTEM "results/daily.copy.orig.simple.lxo">
   4.114 +<!ENTITY interaction.daily.copy.orig.status SYSTEM "results/daily.copy.orig.status.lxo">
   4.115 +<!ENTITY interaction.daily.copy.orig.status-copy SYSTEM "results/daily.copy.orig.status-copy.lxo">
   4.116 +<!ENTITY interaction.daily.copy.other SYSTEM "results/daily.copy.other.lxo">
   4.117 +<!ENTITY interaction.daily.copy.simple SYSTEM "results/daily.copy.simple.lxo">
   4.118 +<!ENTITY interaction.daily.copy.status SYSTEM "results/daily.copy.status.lxo">
   4.119 +<!ENTITY interaction.daily.copy.status-copy SYSTEM "results/daily.copy.status-copy.lxo">
   4.120 +<!ENTITY interaction.daily.files.add SYSTEM "results/daily.files.add.lxo">
   4.121 +<!ENTITY interaction.daily.files.add-dir SYSTEM "results/daily.files.add-dir.lxo">
   4.122 +<!ENTITY interaction.daily.files.addremove SYSTEM "results/daily.files.addremove.lxo">
   4.123 +<!ENTITY interaction.daily.files.commit-addremove SYSTEM "results/daily.files.commit-addremove.lxo">
   4.124 +<!ENTITY interaction.daily.files.hidden SYSTEM "results/daily.files.hidden.lxo">
   4.125 +<!ENTITY interaction.daily.files.missing SYSTEM "results/daily.files.missing.lxo">
   4.126 +<!ENTITY interaction.daily.files.recover-missing SYSTEM "results/daily.files.recover-missing.lxo">
   4.127 +<!ENTITY interaction.daily.files.remove SYSTEM "results/daily.files.remove.lxo">
   4.128 +<!ENTITY interaction.daily.files.remove-after SYSTEM "results/daily.files.remove-after.lxo">
   4.129 +<!ENTITY interaction.daily.rename.rename SYSTEM "results/daily.rename.rename.lxo">
   4.130 +<!ENTITY interaction.daily.rename.status SYSTEM "results/daily.rename.status.lxo">
   4.131 +<!ENTITY interaction.daily.rename.status-copy SYSTEM "results/daily.rename.status-copy.lxo">
   4.132 +<!ENTITY interaction.daily.revert.add SYSTEM "results/daily.revert.add.lxo">
   4.133 +<!ENTITY interaction.daily.revert.copy SYSTEM "results/daily.revert.copy.lxo">
   4.134 +<!ENTITY interaction.daily.revert.missing SYSTEM "results/daily.revert.missing.lxo">
   4.135 +<!ENTITY interaction.daily.revert.modify SYSTEM "results/daily.revert.modify.lxo">
   4.136 +<!ENTITY interaction.daily.revert.remove SYSTEM "results/daily.revert.remove.lxo">
   4.137 +<!ENTITY interaction.daily.revert.rename SYSTEM "results/daily.revert.rename.lxo">
   4.138 +<!ENTITY interaction.daily.revert.rename-orig SYSTEM "results/daily.revert.rename-orig.lxo">
   4.139 +<!ENTITY interaction.daily.revert.status SYSTEM "results/daily.revert.status.lxo">
   4.140 +<!ENTITY interaction.daily.revert.unmodify SYSTEM "results/daily.revert.unmodify.lxo">
   4.141 +<!ENTITY interaction.extdiff.diff SYSTEM "results/extdiff.diff.lxo">
   4.142 +<!ENTITY interaction.extdiff.extdiff SYSTEM "results/extdiff.extdiff.lxo">
   4.143 +<!ENTITY interaction.extdiff.extdiff-ctx SYSTEM "results/extdiff.extdiff-ctx.lxo">
   4.144 +<!ENTITY interaction.filenames.dirs SYSTEM "results/filenames.dirs.lxo">
   4.145 +<!ENTITY interaction.filenames.files SYSTEM "results/filenames.files.lxo">
   4.146 +<!ENTITY interaction.filenames.filter.exclude SYSTEM "results/filenames.filter.exclude.lxo">
   4.147 +<!ENTITY interaction.filenames.filter.include SYSTEM "results/filenames.filter.include.lxo">
   4.148 +<!ENTITY interaction.filenames.glob.group SYSTEM "results/filenames.glob.group.lxo">
   4.149 +<!ENTITY interaction.filenames.glob.question SYSTEM "results/filenames.glob.question.lxo">
   4.150 +<!ENTITY interaction.filenames.glob.range SYSTEM "results/filenames.glob.range.lxo">
   4.151 +<!ENTITY interaction.filenames.glob.star SYSTEM "results/filenames.glob.star.lxo">
   4.152 +<!ENTITY interaction.filenames.glob.star-starstar SYSTEM "results/filenames.glob.star-starstar.lxo">
   4.153 +<!ENTITY interaction.filenames.glob.starstar SYSTEM "results/filenames.glob.starstar.lxo">
   4.154 +<!ENTITY interaction.filenames.wdir-relname SYSTEM "results/filenames.wdir-relname.lxo">
   4.155 +<!ENTITY interaction.filenames.wdir-subdir SYSTEM "results/filenames.wdir-subdir.lxo">
   4.156 +<!ENTITY interaction.hook.msglen.go SYSTEM "results/hook.msglen.go.lxo">
   4.157 +<!ENTITY interaction.hook.simple.ext SYSTEM "results/hook.simple.ext.lxo">
   4.158 +<!ENTITY interaction.hook.simple.init SYSTEM "results/hook.simple.init.lxo">
   4.159 +<!ENTITY interaction.hook.simple.pretxncommit SYSTEM "results/hook.simple.pretxncommit.lxo">
   4.160 +<!ENTITY interaction.issue29.go SYSTEM "results/issue29.go.lxo">
   4.161 +<!ENTITY interaction.mq.dodiff.diff SYSTEM "results/mq.dodiff.diff.lxo">
   4.162 +<!ENTITY interaction.mq.guards.init SYSTEM "results/mq.guards.init.lxo">
   4.163 +<!ENTITY interaction.mq.guards.qguard SYSTEM "results/mq.guards.qguard.lxo">
   4.164 +<!ENTITY interaction.mq.guards.qguard.neg SYSTEM "results/mq.guards.qguard.neg.lxo">
   4.165 +<!ENTITY interaction.mq.guards.qguard.pos SYSTEM "results/mq.guards.qguard.pos.lxo">
   4.166 +<!ENTITY interaction.mq.guards.qselect.cat SYSTEM "results/mq.guards.qselect.cat.lxo">
   4.167 +<!ENTITY interaction.mq.guards.qselect.error SYSTEM "results/mq.guards.qselect.error.lxo">
   4.168 +<!ENTITY interaction.mq.guards.qselect.foo SYSTEM "results/mq.guards.qselect.foo.lxo">
   4.169 +<!ENTITY interaction.mq.guards.qselect.foobar SYSTEM "results/mq.guards.qselect.foobar.lxo">
   4.170 +<!ENTITY interaction.mq.guards.qselect.qpush SYSTEM "results/mq.guards.qselect.qpush.lxo">
   4.171 +<!ENTITY interaction.mq.guards.qselect.quux SYSTEM "results/mq.guards.qselect.quux.lxo">
   4.172 +<!ENTITY interaction.mq.guards.series SYSTEM "results/mq.guards.series.lxo">
   4.173 +<!ENTITY interaction.mq.id.lxoput SYSTEM "results/mq.id.lxoput.lxo">
   4.174 +<!ENTITY interaction.mq.id.output SYSTEM "results/mq.id.output.lxo">
   4.175 +<!ENTITY interaction.mq.qinit-help.help SYSTEM "results/mq.qinit-help.help.lxo">
   4.176 +<!ENTITY interaction.mq.tarball.download SYSTEM "results/mq.tarball.download.lxo">
   4.177 +<!ENTITY interaction.mq.tarball.newsource SYSTEM "results/mq.tarball.newsource.lxo">
   4.178 +<!ENTITY interaction.mq.tarball.qinit SYSTEM "results/mq.tarball.qinit.lxo">
   4.179 +<!ENTITY interaction.mq.tarball.repush SYSTEM "results/mq.tarball.repush.lxo">
   4.180 +<!ENTITY interaction.mq.tools.lsdiff SYSTEM "results/mq.tools.lsdiff.lxo">
   4.181 +<!ENTITY interaction.mq.tools.tools SYSTEM "results/mq.tools.tools.lxo">
   4.182 +<!ENTITY interaction.mq.tutorial.add SYSTEM "results/mq.tutorial.add.lxo">
   4.183 +<!ENTITY interaction.mq.tutorial.qinit SYSTEM "results/mq.tutorial.qinit.lxo">
   4.184 +<!ENTITY interaction.mq.tutorial.qnew SYSTEM "results/mq.tutorial.qnew.lxo">
   4.185 +<!ENTITY interaction.mq.tutorial.qnew2 SYSTEM "results/mq.tutorial.qnew2.lxo">
   4.186 +<!ENTITY interaction.mq.tutorial.qpop SYSTEM "results/mq.tutorial.qpop.lxo">
   4.187 +<!ENTITY interaction.mq.tutorial.qpush-a SYSTEM "results/mq.tutorial.qpush-a.lxo">
   4.188 +<!ENTITY interaction.mq.tutorial.qrefresh SYSTEM "results/mq.tutorial.qrefresh.lxo">
   4.189 +<!ENTITY interaction.mq.tutorial.qrefresh2 SYSTEM "results/mq.tutorial.qrefresh2.lxo">
   4.190 +<!ENTITY interaction.mq.tutorial.qseries SYSTEM "results/mq.tutorial.qseries.lxo">
   4.191 +<!ENTITY interaction.rename.divergent.clone SYSTEM "results/rename.divergent.clone.lxo">
   4.192 +<!ENTITY interaction.rename.divergent.merge SYSTEM "results/rename.divergent.merge.lxo">
   4.193 +<!ENTITY interaction.rename.divergent.rename.anne SYSTEM "results/rename.divergent.rename.anne.lxo">
   4.194 +<!ENTITY interaction.rename.divergent.rename.bob SYSTEM "results/rename.divergent.rename.bob.lxo">
   4.195 +<!ENTITY interaction.rollback.add SYSTEM "results/rollback.add.lxo">
   4.196 +<!ENTITY interaction.rollback.commit SYSTEM "results/rollback.commit.lxo">
   4.197 +<!ENTITY interaction.rollback.rollback SYSTEM "results/rollback.rollback.lxo">
   4.198 +<!ENTITY interaction.rollback.status SYSTEM "results/rollback.status.lxo">
   4.199 +<!ENTITY interaction.rollback.tip SYSTEM "results/rollback.tip.lxo">
   4.200 +<!ENTITY interaction.rollback.twice SYSTEM "results/rollback.twice.lxo">
   4.201 +<!ENTITY interaction.tag.init SYSTEM "results/tag.init.lxo">
   4.202 +<!ENTITY interaction.tag.log SYSTEM "results/tag.log.lxo">
   4.203 +<!ENTITY interaction.tag.log.v1.0 SYSTEM "results/tag.log.v1.0.lxo">
   4.204 +<!ENTITY interaction.tag.remove SYSTEM "results/tag.remove.lxo">
   4.205 +<!ENTITY interaction.tag.replace SYSTEM "results/tag.replace.lxo">
   4.206 +<!ENTITY interaction.tag.tag SYSTEM "results/tag.tag.lxo">
   4.207 +<!ENTITY interaction.tag.tags SYSTEM "results/tag.tags.lxo">
   4.208 +<!ENTITY interaction.tag.tip SYSTEM "results/tag.tip.lxo">
   4.209 +<!ENTITY interaction.template.simple.changelog SYSTEM "results/template.simple.changelog.lxo">
   4.210 +<!ENTITY interaction.template.simple.combine SYSTEM "results/template.simple.combine.lxo">
   4.211 +<!ENTITY interaction.template.simple.compact SYSTEM "results/template.simple.compact.lxo">
   4.212 +<!ENTITY interaction.template.simple.datekeyword SYSTEM "results/template.simple.datekeyword.lxo">
   4.213 +<!ENTITY interaction.template.simple.keywords SYSTEM "results/template.simple.keywords.lxo">
   4.214 +<!ENTITY interaction.template.simple.manyfilters SYSTEM "results/template.simple.manyfilters.lxo">
   4.215 +<!ENTITY interaction.template.simple.normal SYSTEM "results/template.simple.normal.lxo">
   4.216 +<!ENTITY interaction.template.simple.rev SYSTEM "results/template.simple.rev.lxo">
   4.217 +<!ENTITY interaction.template.simple.simplest SYSTEM "results/template.simple.simplest.lxo">
   4.218 +<!ENTITY interaction.template.simple.simplesub SYSTEM "results/template.simple.simplesub.lxo">
   4.219 +<!ENTITY interaction.template.svnstyle.id SYSTEM "results/template.svnstyle.id.lxo">
   4.220 +<!ENTITY interaction.template.svnstyle.result SYSTEM "results/template.svnstyle.result.lxo">
   4.221 +<!ENTITY interaction.template.svnstyle.short SYSTEM "results/template.svnstyle.short.lxo">
   4.222 +<!ENTITY interaction.template.svnstyle.simplest SYSTEM "results/template.svnstyle.simplest.lxo">
   4.223 +<!ENTITY interaction.template.svnstyle.style SYSTEM "results/template.svnstyle.style.lxo">
   4.224 +<!ENTITY interaction.template.svnstyle.syntax.error SYSTEM "results/template.svnstyle.syntax.error.lxo">
   4.225 +<!ENTITY interaction.template.svnstyle.syntax.input SYSTEM "results/template.svnstyle.syntax.input.lxo">
   4.226 +<!ENTITY interaction.template.svnstyle.template SYSTEM "results/template.svnstyle.template.lxo">
   4.227 +<!ENTITY interaction.tour-merge-conflict.commit SYSTEM "results/tour-merge-conflict.commit.lxo">
   4.228 +<!ENTITY interaction.tour-merge-conflict.cousin SYSTEM "results/tour-merge-conflict.cousin.lxo">
   4.229 +<!ENTITY interaction.tour-merge-conflict.merge SYSTEM "results/tour-merge-conflict.merge.lxo">
   4.230 +<!ENTITY interaction.tour-merge-conflict.pull SYSTEM "results/tour-merge-conflict.pull.lxo">
   4.231 +<!ENTITY interaction.tour-merge-conflict.son SYSTEM "results/tour-merge-conflict.son.lxo">
   4.232 +<!ENTITY interaction.tour-merge-conflict.wife SYSTEM "results/tour-merge-conflict.wife.lxo">
   4.233 +<!ENTITY interaction.tour.cat1 SYSTEM "results/tour.cat1.lxo">
   4.234 +<!ENTITY interaction.tour.cat2 SYSTEM "results/tour.cat2.lxo">
   4.235 +<!ENTITY interaction.tour.clone SYSTEM "results/tour.clone.lxo">
   4.236 +<!ENTITY interaction.tour.clone-pull SYSTEM "results/tour.clone-pull.lxo">
   4.237 +<!ENTITY interaction.tour.clone-push SYSTEM "results/tour.clone-push.lxo">
   4.238 +<!ENTITY interaction.tour.commit SYSTEM "results/tour.commit.lxo">
   4.239 +<!ENTITY interaction.tour.diff SYSTEM "results/tour.diff.lxo">
   4.240 +<!ENTITY interaction.tour.help SYSTEM "results/tour.help.lxo">
   4.241 +<!ENTITY interaction.tour.incoming SYSTEM "results/tour.incoming.lxo">
   4.242 +<!ENTITY interaction.tour.log SYSTEM "results/tour.log.lxo">
   4.243 +<!ENTITY interaction.tour.log-r SYSTEM "results/tour.log-r.lxo">
   4.244 +<!ENTITY interaction.tour.log-v SYSTEM "results/tour.log-v.lxo">
   4.245 +<!ENTITY interaction.tour.log-vp SYSTEM "results/tour.log-vp.lxo">
   4.246 +<!ENTITY interaction.tour.log.range SYSTEM "results/tour.log.range.lxo">
   4.247 +<!ENTITY interaction.tour.ls SYSTEM "results/tour.ls.lxo">
   4.248 +<!ENTITY interaction.tour.ls-a SYSTEM "results/tour.ls-a.lxo">
   4.249 +<!ENTITY interaction.tour.lxogoing SYSTEM "results/tour.lxogoing.lxo">
   4.250 +<!ENTITY interaction.tour.lxogoing.net SYSTEM "results/tour.lxogoing.net.lxo">
   4.251 +<!ENTITY interaction.tour.merge.cat SYSTEM "results/tour.merge.cat.lxo">
   4.252 +<!ENTITY interaction.tour.merge.cat1 SYSTEM "results/tour.merge.cat1.lxo">
   4.253 +<!ENTITY interaction.tour.merge.cat2 SYSTEM "results/tour.merge.cat2.lxo">
   4.254 +<!ENTITY interaction.tour.merge.clone SYSTEM "results/tour.merge.clone.lxo">
   4.255 +<!ENTITY interaction.tour.merge.commit SYSTEM "results/tour.merge.commit.lxo">
   4.256 +<!ENTITY interaction.tour.merge.dummy1 SYSTEM "results/tour.merge.dummy1.lxo">
   4.257 +<!ENTITY interaction.tour.merge.dummy2 SYSTEM "results/tour.merge.dummy2.lxo">
   4.258 +<!ENTITY interaction.tour.merge.dummy3 SYSTEM "results/tour.merge.dummy3.lxo">
   4.259 +<!ENTITY interaction.tour.merge.dummy4 SYSTEM "results/tour.merge.dummy4.lxo">
   4.260 +<!ENTITY interaction.tour.merge.heads SYSTEM "results/tour.merge.heads.lxo">
   4.261 +<!ENTITY interaction.tour.merge.merge SYSTEM "results/tour.merge.merge.lxo">
   4.262 +<!ENTITY interaction.tour.merge.parents SYSTEM "results/tour.merge.parents.lxo">
   4.263 +<!ENTITY interaction.tour.merge.pull SYSTEM "results/tour.merge.pull.lxo">
   4.264 +<!ENTITY interaction.tour.merge.tip SYSTEM "results/tour.merge.tip.lxo">
   4.265 +<!ENTITY interaction.tour.merge.update SYSTEM "results/tour.merge.update.lxo">
   4.266 +<!ENTITY interaction.tour.older SYSTEM "results/tour.older.lxo">
   4.267 +<!ENTITY interaction.tour.outgoing SYSTEM "results/tour.outgoing.lxo">
   4.268 +<!ENTITY interaction.tour.outgoing.net SYSTEM "results/tour.outgoing.net.lxo">
   4.269 +<!ENTITY interaction.tour.parents SYSTEM "results/tour.parents.lxo">
   4.270 +<!ENTITY interaction.tour.pull SYSTEM "results/tour.pull.lxo">
   4.271 +<!ENTITY interaction.tour.push SYSTEM "results/tour.push.lxo">
   4.272 +<!ENTITY interaction.tour.push.net SYSTEM "results/tour.push.net.lxo">
   4.273 +<!ENTITY interaction.tour.push.nothing SYSTEM "results/tour.push.nothing.lxo">
   4.274 +<!ENTITY interaction.tour.reclone SYSTEM "results/tour.reclone.lxo">
   4.275 +<!ENTITY interaction.tour.sed SYSTEM "results/tour.sed.lxo">
   4.276 +<!ENTITY interaction.tour.status SYSTEM "results/tour.status.lxo">
   4.277 +<!ENTITY interaction.tour.tip SYSTEM "results/tour.tip.lxo">
   4.278 +<!ENTITY interaction.tour.update SYSTEM "results/tour.update.lxo">
   4.279 +<!ENTITY interaction.tour.version SYSTEM "results/tour.version.lxo">