hgbook

changeset 753:6ff5cf15b3c9

Complete revision of Ch.7.
author Giulio@puck
date Sun Jul 12 21:35:06 2009 +0200 (2009-07-12)
parents 7cae04faea70
children 202164e6976d
files it/ch07-filenames.xml
line diff
     1.1 --- a/it/ch07-filenames.xml	Sun Jul 12 00:45:12 2009 +0200
     1.2 +++ b/it/ch07-filenames.xml	Sun Jul 12 21:35:06 2009 +0200
     1.3 @@ -7,9 +7,9 @@
     1.4    <sect1>
     1.5      <title>Denominazione semplice dei file</title>
     1.6  
     1.7 -    <para id="x_544">Mercurial usa un unico meccanismo <quote>~under the hood~</quote> per gestire i nomi dei file. Tutti i comandi si comportano in maniera uniforme rispetto ai nomi dei file. I comandi lavorano con i nomi dei file nel modo seguente.</para>
     1.8 -
     1.9 -    <para id="x_545">Se nominate esplicitamente file reali sulla riga di comando, Mercurial lavora esattamente con quei file, come vi aspettereste.</para>
    1.10 +    <para id="x_544">Mercurial usa un unico meccanismo a livello di implementazione per gestire i nomi dei file. Tutti i comandi si comportano in maniera uniforme rispetto ai nomi dei file e lavorano nel modo seguente.</para>
    1.11 +
    1.12 +    <para id="x_545">Se indicate esplicitamente nomi di file esistenti sulla riga di comando, Mercurial lavora esattamente con quei file, come vi aspettereste.</para>
    1.13      
    1.14        &interaction.filenames.files;
    1.15  
    1.16 @@ -21,14 +21,14 @@
    1.17    <sect1>
    1.18      <title>Eseguire comandi senza nomi di file</title>
    1.19  
    1.20 -    <para id="x_547">I comandi di Mercurial che lavorano con i nomi di file assumono un utile comportamento predefinito quando li invocate senza passare alcun nome di file o pattern. Il comportamento che dovreste aspettarvi dipende dalla funzionalità del comando. Ecco alcune ~rules of thumb~ che potete usare per predirre cosa è probabile che farà un comando se non gli date alcun nome con cui lavorare.</para>
    1.21 +    <para id="x_547">I comandi di Mercurial che lavorano con i nomi di file assumono un utile comportamento predefinito quando li invocate senza passare alcun nome di file o pattern. Il comportamento che dovreste aspettarvi dipende dalla funzionalità del comando. Ecco alcune regole pratiche che potete usare per predirre quello che un comando probabilmente farà se non gli date alcun nome con cui lavorare.</para>
    1.22      <itemizedlist>
    1.23        <listitem><para id="x_548">La maggior parte dei comandi opererà sull'intera directory di lavoro. Per esempio, questo è quello che fa il comando <command role="hg-cmd">hg add</command>.</para>
    1.24        </listitem>
    1.25 -      <listitem><para id="x_549">Se il comando ha effetti che sono difficili o impossibili da invertire, vi obbligherà a dargli esplicitamente almeno un nome o un pattern (si veda più avanti). Per esempio, questo vi protegge dalla cancellazione accidentale dei file causata dall'esecuzione di <command role="hg-cmd">hg remove</command> senza argomenti.</para>
    1.26 +      <listitem><para id="x_549">Se gli effetti di un comando sono difficili o impossibili da invertire, sarete obbligati a fornirgli esplicitamente almeno un nome o un pattern (si veda più avanti). Questo vi protegge, per esempio, dalla cancellazione accidentale dei file causata da un'esecuzione di <command role="hg-cmd">hg remove</command> senza argomenti.</para>
    1.27        </listitem></itemizedlist>
    1.28  
    1.29 -    <para id="x_54a">Se questi comportamenti predefiniti non vi soddisfano, è facile aggirarli. Se un comando normalmente opera sull'intera directory di lavoro, potete invocarlo solo sulla directory corrente e le sue sottodirectory passandogli il nome <quote><filename class="directory">.</filename></quote>.</para>
    1.30 +    <para id="x_54a">Se questi comportamenti predefiniti non vi soddisfano, è facile aggirarli. Se normalmente un comando opera sull'intera directory di lavoro, potete passargli il nome <quote><filename class="directory">.</filename></quote> per invocarlo solo sulla directory corrente e sulle sue sottodirectory.</para>
    1.31  
    1.32      &interaction.filenames.wdir-subdir;
    1.33  
    1.34 @@ -38,13 +38,13 @@
    1.35    </sect1>
    1.36  
    1.37    <sect1>
    1.38 -    <title>Dirvi cosa sta accadendo</title>
    1.39 +    <title>Mercurial vi dice cosa sta succedendo</title>
    1.40  
    1.41      <para id="x_54c">L'esempio di <command role="hg-cmd">hg add</command> nella sezione precedente illustra qualcos'altro che è utile sapere sui comandi Mercurial. Se un comando opera su un file che non avete nominato esplicitamente sulla riga di comando, di solito stamperà il nome del file in modo che non veniate sorpresi da quello che sta succedendo.</para>
    1.42  
    1.43 -    <para id="x_54d">In questo caso, Mercurial segue il principio della <emphasis>~least surprise~</emphasis>. Se avete fornito il nome esatto di un file sulla riga di comando, non ha senso ripetervelo. Se Mercurial sta agendo <emphasis>implicitamente</emphasis> su un file, e.g. perché non avete fornito alcun nome, o su una directory, o su un pattern (si veda più avanti), è più sicuro farvi sapere su quali file sta lavorando.</para>
    1.44 -
    1.45 -    <para id="x_54e">Potete ridurre al silenzio i comandi che si comportano in questo modo usando l'opzione <option role="hg-opt-global">-q</option>. Potete anche dirgli di stampare il nome di tuti i file, anche quelli che avete nominato esplicitamente, usando l'opzione <option role="hg-opt-global">-v</option>.</para>
    1.46 +    <para id="x_54d">In questo caso, Mercurial segue il principio della <emphasis>minima sorpresa</emphasis>. Se avete fornito il nome esatto di un file sulla riga di comando, non ha senso ripetervelo. Se Mercurial sta agendo <emphasis>implicitamente</emphasis> su un file, e.g. perché non avete fornito alcun nome, o su una directory, o su un pattern (si veda più avanti), ritiene sia più sicuro farvi sapere su quali file sta lavorando.</para>
    1.47 +
    1.48 +    <para id="x_54e">Potete ridurre al silenzio i comandi che si comportano in questo modo usando l'opzione <option role="hg-opt-global">-q</option>. Potete anche dirgli di stampare il nome di tutti i file, anche quelli che avete nominato esplicitamente, usando l'opzione <option role="hg-opt-global">-v</option>.</para>
    1.49    </sect1>
    1.50  
    1.51    <sect1>
    1.52 @@ -54,7 +54,7 @@
    1.53  
    1.54      <para id="x_550">Su sistemi di tipo Unix (Linux, Mac OS X, etc.), di solito è la shell ad occuparsi di trovare le corrispondenze tra i pattern e i nomi dei file. Su questi sistemi, dovete esplicitamente dire a Mercurial che un nome è un pattern. Sotto Windows, la shell non si occupa di espandere i pattern, quindi Mercurial identificherà automaticamente i nomi che sono pattern e li espanderà per voi.</para>
    1.55  
    1.56 -    <para id="x_551">Per fornire un pattern al posto di un nome regolare sulla riga di comando, il meccanismo è semplice:</para>
    1.57 +    <para id="x_551">Per fornire un pattern al posto di un nome ordinario sulla riga di comando, il meccanismo è semplice:</para>
    1.58      <programlisting>syntax:patternbody</programlisting>
    1.59      <para id="x_552">Cioè, un pattern viene identificato da una breve stringa di testo che indica il tipo del pattern, seguita dai due punti, seguiti dall'effettivo pattern.</para>
    1.60  
    1.61 @@ -62,7 +62,7 @@
    1.62  
    1.63      <para id="x_554">Quando Mercurial effettua la corrispondenza automatica di un pattern sotto Windows, usa la sintassi <literal>glob</literal>. Quindi, potete omettere il prefisso <quote><literal>glob:</literal></quote> sotto Windows, ma se volete potete anche usarlo tranquillamente.</para>
    1.64  
    1.65 -    <para id="x_555">La sintassi <literal>re</literal> è più potente perché vi permette di specificare i pattern usando le espressioni regolari, anche note come regexp.</para>
    1.66 +    <para id="x_555">La sintassi <literal>re</literal> è più potente perché vi permette di specificare i pattern usando le espressioni regolari, indicate a volte con il termine regexp.</para>
    1.67  
    1.68      <para id="x_556">Notate che, negli esempi che seguono, farò molta attenzione a racchiudere tutti i miei pattern tra caratteri di apice, in modo che non vengano espansi dalla shell prima che Mercurial li veda.</para>
    1.69  
    1.70 @@ -83,20 +83,20 @@
    1.71  
    1.72        &interaction.filenames.glob.question;
    1.73  
    1.74 -      <para id="x_55b">Il carattere <quote><literal>[</literal></quote> comincia una <emphasis>classe di caratteri</emphasis>. Questo pattern corrisponde a qualsiasi carattere compreso nella classe. La classe viene terminata da un carattere <quote><literal>]</literal></quote> character. Una classe può contenere molteplici <emphasis>intervalli</emphasis> della forma <quote><literal>a-f</literal></quote>, che è una abbreviazione per <quote><literal>abcdef</literal></quote>.</para>
    1.75 +      <para id="x_55b">Il carattere <quote><literal>[</literal></quote> comincia una <emphasis>classe di caratteri</emphasis>. Questo pattern corrisponde a qualsiasi carattere compreso nella classe. La classe viene terminata da un carattere <quote><literal>]</literal></quote>. Una classe può contenere molteplici <emphasis>intervalli</emphasis> della forma <quote><literal>a-f</literal></quote>, che è una abbreviazione per <quote><literal>abcdef</literal></quote>.</para>
    1.76  
    1.77  	&interaction.filenames.glob.range;
    1.78  
    1.79        <para id="x_55c">Se il primo carattere dopo <quote><literal>[</literal></quote> in una classe di caratteri è <quote><literal>!</literal></quote>, si ottiene l'effetto di <emphasis>negare</emphasis> la classe, facendola corrispondere a qualsiasi carattere non compreso nella classe.</para>
    1.80  
    1.81 -      <para id="x_55d">Un carattere <quote><literal>{</literal></quote> comincia un gruppo di sottopattern, che trova una corrispondenza se un qualsiasi sottopattern nel gruppo trova una corrispondenza. Il carattere <quote><literal>,</literal></quote> separa i sottopattern, e il carattere <quote><literal>}</literal></quote> termina il gruppo.</para>
    1.82 +      <para id="x_55d">Un carattere <quote><literal>{</literal></quote> comincia un gruppo di sottopattern, che trova una corrispondenza se un qualsiasi sottopattern nel gruppo trova una corrispondenza. Il carattere <quote><literal>,</literal></quote> separa i sottopattern e il carattere <quote><literal>}</literal></quote> termina il gruppo.</para>
    1.83  
    1.84        &interaction.filenames.glob.group;
    1.85  
    1.86        <sect3>
    1.87  	<title>Fate attenzione!</title>
    1.88  
    1.89 -	<para id="x_55e">Non dimenticate che se volete trovare corrispondenze a un pattern in qualsiasi directory, non dovreste usare il simbolo <quote><literal>*</literal></quote>, dato che questo troverà corrispondenze solo in una directory. Invece, usate il simbolo <quote><literal>**</literal></quote>. Questo piccolo esempio illustra la differenza tra i due.</para>
    1.90 +	<para id="x_55e">Non dimenticate che, se volete trovare corrispondenze a un pattern in qualsiasi directory, non dovreste usare il simbolo <quote><literal>*</literal></quote>, dato che questo troverà corrispondenze solo in una directory, ma dovreste usare il simbolo <quote><literal>**</literal></quote>. Questo piccolo esempio illustra la differenza tra i due.</para>
    1.91  
    1.92  	  &interaction.filenames.glob.star-starstar;
    1.93        </sect3>
    1.94 @@ -107,30 +107,30 @@
    1.95  
    1.96        <para id="x_55f">Mercurial accetta la stessa sintassi per le espressioni regolari che viene usata dal linugaggio di programmazione Python (usa internamente il motore di regexp di Python). Questa sintassi è basata su quella del linguaggio Perl, che è il dialetto più popolare in uso (è anche utilizzato in Java, per esempio).</para>
    1.97  
    1.98 -      <para id="x_560">Non discuterò alcun dettaglio del dialetto di regexp di Mercurial, qui, dato che le regexp non vengono usate molto spesso. Le regexp in stile Perl sono comunque già documentate in maniera esauriente su una moltitudine di siti web e in numerosi libri. Invece, qui mi concentrerò su alcune cose che dovreste sapere se vi trovate ad avere bisogno di usare le espressioni regolari con Mercurial.</para>
    1.99 -
   1.100 -      <para id="x_561">Una regexp cerca una corrispondenza con un intero nome di file, relativo alla radice del repository. In altre parole, anche se siete già nella sottodirectory <filename class="directory">foo</filename>, se volete una corrispondenza con i file in questa directory, il vostro pattern dovrà cominciare con <quote><literal>foo/</literal></quote>.</para>
   1.101 -
   1.102 -      <para id="x_562">Una cosa da notare, se avete familiarità con le regexp in stile Perl, è che le espressioni regolari di Mercurial sono <emphasis>~rooted~</emphasis>. Cioè, una regexp cerca una corrispondenza dall'inizio di una stringa e non cerca corrispondenze in altre posizioni all'interno della stringa. Per cercare una corrispondenza in qualsiasi punto della stringa, il vostro pattern deve cominciare con <quote><literal>.*</literal></quote>.</para>
   1.103 +      <para id="x_560">Non discuterò alcun dettaglio del dialetto di regexp di Mercurial in questo libro, dato che le regexp non vengono usate molto spesso. Le regexp in stile Perl sono comunque già documentate in maniera esauriente su una moltitudine di siti web e in numerosi libri. Invece, qui mi concentrerò su alcune cose che dovreste sapere se vi trovate ad aver bisogno di usare le espressioni regolari con Mercurial.</para>
   1.104 +
   1.105 +      <para id="x_561">Una regexp cerca una corrispondenza con un intero nome di file, relativo alla radice del repository. In altre parole, anche se siete già nella sottodirectory <filename class="directory">foo</filename>, se volete una corrispondenza con i file in questa directory il vostro pattern dovrà cominciare con <quote><literal>foo/</literal></quote>.</para>
   1.106 +
   1.107 +      <para id="x_562">Una cosa da notare, se avete familiarità con le regexp in stile Perl, è che le espressioni regolari di Mercurial sono <emphasis>vincolate</emphasis>, nel senso che una regexp cerca una corrispondenza partendo sempre dall'inizio di una stringa e non da altre posizioni all'interno della stringa. Per cercare una corrispondenza in qualsiasi punto della stringa il vostro pattern deve cominciare con <quote><literal>.*</literal></quote>.</para>
   1.108      </sect2>
   1.109    </sect1>
   1.110  
   1.111    <sect1>
   1.112      <title>Filtrare i file</title>
   1.113  
   1.114 -    <para id="x_563">Mercurial non vi dà solo una varietà di modi per specificare i file, ma vi permette di vagliare ulteriormente quei file usando i <emphasis>filtri</emphasis>. I comandi che lavorano con i nomi dei file accettano due opzioni di filtraggio.</para>
   1.115 +    <para id="x_563">Mercurial non vi fornisce solo una varietà di modi per specificare i file, ma vi permette di vagliare ulteriormente quei file usando i <emphasis>filtri</emphasis>. I comandi che lavorano con i nomi dei file accettano due opzioni di filtraggio.</para>
   1.116      <itemizedlist>
   1.117        <listitem><para id="x_564">L'opzione <option role="hg-opt-global">-I</option>, o <option role="hg-opt-global">--include</option>, vi permette di specificare un pattern a cui i nomi dei file devono corrispondere per poter essere elaborati.</para>
   1.118        </listitem>
   1.119        <listitem><para id="x_565">L'opzione <option role="hg-opt-global">-X</option>, o <option role="hg-opt-global">--exclude</option>, vi fornisce un modo per <emphasis>evitare</emphasis> di elaborare i file che corrispondono a questo pattern.</para>
   1.120        </listitem></itemizedlist>
   1.121 -    <para id="x_566">Potete passare più opzioni <option role="hg-opt-global">-I</option> e <option role="hg-opt-global">-X</option> sulla riga di comando e mescolarle come preferite. Mercurial interpreta i pattern che fornite usando la sintassi glob per default (ma potete usare le espressioni regolari se ne avete bisogno).</para>
   1.122 -
   1.123 -    <para id="x_567">Potete interpretare un filtro <option role="hg-opt-global">-I</option> come <quote>elabora solo i file che corrispondono a questo filtro</quote>.</para>
   1.124 +    <para id="x_566">Potete passare più opzioni <option role="hg-opt-global">-I</option> e <option role="hg-opt-global">-X</option> sulla riga di comando e alternarle come preferite. Mercurial interpreta i pattern che riceve usando la sintassi glob per default (ma potete usare le espressioni regolari se ne avete bisogno).</para>
   1.125 +
   1.126 +    <para id="x_567">Potete interpretare un filtro <option role="hg-opt-global">-I</option> come una richiesta di <quote>elaborare solo i file che corrispondono a questo filtro</quote>.</para>
   1.127  
   1.128      &interaction.filenames.filter.include;
   1.129  
   1.130 -    <para id="x_568">L'interpretazione migliore del filtro <option role="hg-opt-global">-X</option> è come <quote>elabora solo i file che non corrispondono a questo pattern</quote>.</para>
   1.131 +    <para id="x_568">L'interpretazione migliore del filtro <option role="hg-opt-global">-X</option> è quella di una richiesta di <quote>elaborare solo i file che non corrispondono a questo pattern</quote>.</para>
   1.132  
   1.133      &interaction.filenames.filter.exclude;
   1.134    </sect1>
   1.135 @@ -138,17 +138,17 @@
   1.136    <sect1>
   1.137      <title>Ignorare permanentemente file e directory indesiderate</title>
   1.138  
   1.139 -    <para id="x_569">Quando create un nuovo repository, è possibile che nel tempo crescerà fino a contenere file che <emphasis>non</emphasis> dovrebbero essere gestiti da Mercurial, ma che non volete vedere elencati ogni volta che eseguite <command>hg status</command>. Per esempio, i <quote>prodotti di assemblaggio</quote> sono file che vengono creati come parte dell'assemblaggio di un progetto ma che non dovrebbero essere gestiti da un sistema di controllo di revisione. I prodotti di assemblaggio più comuni sono file prodotti da strumenti software come i compilatori. Un altro esempio sono i file di bloccaggio, i file di lavoro temporanei e i file di backup che gli editor di testo spargono nelle directory e che non ha alcun senso gestire.</para>
   1.140 -
   1.141 -    <para id="x_6b4">Per fare in modo che Mercurial ignori permanentemente quei file, create un file chiamato <filename>.hgignore</filename> alla radice del vostro repository. <emphasis>Dovreste</emphasis> aggiungere al repository questo file tramite <command>hg add</command> in modo che Mercurial ne tenga traccia insieme al resto dei contenuti del vostro repository, dato che anche i vostri collaboratori potrebbero trovarlo utile.</para>
   1.142 -
   1.143 -    <para id="x_6b5">Di default, il file <filename>.hgignore</filename> dovrebbe contenere una lista di espressioni regolari, una per riga. Le linee vuote vengono saltate. La maggior parte delle persone preferisce descrivere i file che vogliono ignorare utilizzando la sintassi <quote>glob</quote> che abbiamo descritto in precedenza, quindi un tipico file <filename>.hgignore</filename> comincerà con questa direttiva:</para>
   1.144 +    <para id="x_569">Quando create un nuovo repository, è possibile che nel tempo cresca fino a contenere file che <emphasis>non</emphasis> dovrebbero essere gestiti da Mercurial, ma che non vorreste vedere elencati ogni volta che eseguite <command>hg status</command>. Per esempio, i <quote>prodotti di assemblaggio</quote> sono file che vengono creati come parte dell'assemblaggio di un progetto ma che non dovrebbero essere gestiti da un sistema di controllo di revisione. I prodotti di assemblaggio più comuni sono i file di elaborazione generati da strumenti software come i compilatori. Un altro esempio sono i file di bloccaggio, i file di lavoro temporanei e i file di backup che gli editor di testo disseminano per le directory e che non ha alcun senso gestire.</para>
   1.145 +
   1.146 +    <para id="x_6b4">Per fare in modo che Mercurial ignori permanentemente quei file, create un file chiamato <filename>.hgignore</filename> alla radice del vostro repository. <emphasis>Dovreste</emphasis> registrare questo file tramite <command>hg add</command> in modo che Mercurial ne tenga traccia insieme al resto dei contenuti del vostro repository, dato che anche i vostri collaboratori potrebbero trovarlo utile.</para>
   1.147 +
   1.148 +    <para id="x_6b5">Mercurial si aspetta che il file <filename>.hgignore</filename> contenga una lista di espressioni regolari, una per riga. Le linee vuote vengono saltate. La maggior parte delle persone preferisce descrivere i file che vuole ignorare utilizzando la sintassi <quote>glob</quote> che abbiamo descritto in precedenza, quindi un tipico file <filename>.hgignore</filename> comincerà con questa direttiva:</para>
   1.149  
   1.150      <programlisting>syntax: glob</programlisting>
   1.151  
   1.152      <para id="x_6b6">Questa riga dice a Mercurial di interpretare le righe che seguono come pattern di tipo glob, non espressioni regolari.</para>
   1.153  
   1.154 -    <para id="x_6b7">Ecco come appare un tipico file <filename>.hgignore</filename>.</para>
   1.155 +    <para id="x_6b7">Ecco un esempio di un tipico file <filename>.hgignore</filename>.</para>
   1.156  
   1.157      <programlisting>syntax: glob
   1.158  # Questa riga è un commento e verrà saltata.
   1.159 @@ -158,7 +158,7 @@
   1.160  *~
   1.161  
   1.162  # File di bloccaggio usati dall'editor Emacs.
   1.163 -# Notate che il carattere "#" character è preceduto da un backslash.
   1.164 +# Notate che il carattere "#" è preceduto da un backslash.
   1.165  # Questo evita che venga interpretato come l'inizio di un commento.
   1.166  .\#*
   1.167  
   1.168 @@ -173,18 +173,18 @@
   1.169    <sect1 id="sec:names:case">
   1.170      <title>Sensibilità alle maiuscole</title>
   1.171  
   1.172 -    <para id="x_56a">Se state lavorando in un ambiente di sviluppo misto che contiene sia sistemi Linux (o di tipo Unix) che sistemi Mac e Windows, dovreste tenere nel retro della vostra mente la conoscenza che trattano le lettere maiuscole (<quote>N</quote> rispetto a <quote>n</quote>) nei nomi dei file in modi incompatibili tra loro. Non è probabile che questo abbia effetti su di voi ed è facile occuparsene se succedesse, ma potrebbe sorprendervi se non lo sapete.</para>
   1.173 -
   1.174 -    <para id="x_56b">I sistemi operativi e i file system differiscono nel modo in cui gestiscono le <emphasis>maiuscole</emphasis> dei caratteri nei nomi di file e directory. Esisono tre modi comuni di gestire le maiuscole nei nomi.</para>
   1.175 +    <para id="x_56a">Se state lavorando in un ambiente di sviluppo misto che contiene sia sistemi Linux (o di tipo Unix) che Mac e Windows, dovreste tenere a mente che questi sistemi trattano le lettere maiuscole (<quote>N</quote> rispetto a <quote>n</quote>) nei nomi dei file in modi incompatibili tra loro. &Egrave; improbabile che questo abbia effetti su di voi ed è facile occuparsene quando succede, ma potrebbe sorprendervi se non lo sapete.</para>
   1.176 +
   1.177 +    <para id="x_56b">I sistemi operativi e i file system differiscono nel modo in cui gestiscono le <emphasis>maiuscole</emphasis> dei caratteri nei nomi di file e directory. Esistono tre modi comuni di gestire le maiuscole nei nomi.</para>
   1.178      <itemizedlist>
   1.179 -      <listitem><para id="x_56c">Completa insensibilità alle maiuscole. Le versioni maiuscole e le minuscole di una lettera sono trattate come se fossero identiche, sia quando un file viene creato sia durante i successivi accessi. Questo è comune sui vecchi sistemi basati su DOS.</para>
   1.180 -      </listitem>
   1.181 -      <listitem><para id="x_56d">Preservazione delle maiuscole, ma insensibilità. Quando un file o una directory vengono creati, le maiuscole del loro nome vengono memorizzate e possono essere recuperate e visualizzate dal sistema operativo. Quando un file esistente viene cercato, le maiuscole nel suo nome vengono ignorate. Questa è la situazione standard sotto Windows e MacOS. I nomi <filename>foo</filename> e <filename>FoO</filename> identificano lo stsso file. Questo trattamento intercambiabile delle lettere maiuscole e minuscole è anche chiamato <emphasis>ripiegamento delle maiuscole</emphasis>.</para>
   1.182 +      <listitem><para id="x_56c">Completa insensibilità alle maiuscole. Le versioni maiuscole e minuscole di una lettera sono trattate come se fossero identiche, sia quando un file viene creato sia durante i successivi accessi. Questo è il funzionamento comune dei vecchi sistemi basati su DOS.</para>
   1.183 +      </listitem>
   1.184 +      <listitem><para id="x_56d">Conservazione delle maiuscole, ma insensibilità ad esse. Quando un file o una directory vengono creati, le maiuscole nel loro nome vengono memorizzate e possono essere recuperate e visualizzate dal sistema operativo. Quando un file esistente viene cercato, le maiuscole nel suo nome vengono ignorate. Questa è la situazione standard sotto Windows e MacOS. I nomi <filename>foo</filename> e <filename>FoO</filename> identificano lo stsso file. Questo trattamento intercambiabile delle lettere maiuscole e minuscole è anche chiamato <emphasis>ripiegamento delle maiuscole</emphasis>.</para>
   1.185        </listitem>
   1.186        <listitem><para id="x_56e">Sensibilità alle maiuscole. Le lettere maiuscole di un nome sono significative in ogni momento. I nomi <filename>foo</filename> e <filename>FoO</filename> identificano due file differenti. Questo è il modo in cui i sistemi Linux e Unix lavorano normalmente.</para>
   1.187        </listitem></itemizedlist>
   1.188  
   1.189 -    <para id="x_56f">Su sistemi di tipo Unix è possibile avere uno qualsiasi o tutti e tre i modi di gestire le maiuscole in azione allo stesso tempo. Per esempio, se usate una chiavetta USB formattata con un file system FAT32 su un sistema Linux, Linux gestirà i nomi su quel file system in modo da preservare le maiuscole ma senza esservi sensibile.</para>
   1.190 +    <para id="x_56f">Su sistemi di tipo Unix è possibile avere uno qualsiasi o tutti e tre i modi di gestire le maiuscole in azione allo stesso tempo. Per esempio, se usate Linux per operare su una chiavetta USB formattata con un file system FAT32, il sistema operativo gestirà i nomi su quel file system in modo da conservare le maiuscole senza essere sensibile ad esse.</para>
   1.191  
   1.192      <sect2>
   1.193        <title>Memorizzazione del repository sicura e portabile</title>
   1.194 @@ -195,19 +195,19 @@
   1.195      <sect2>
   1.196        <title>Riconoscere i conflitti tra maiuscole e minuscole</title>
   1.197  
   1.198 -      <para id="x_571">Quando opera sulla directory di lavoro, Mercurial segue la politica di denominazione del file system su cui la directory di lavoro si trova. Se il file system preserva le maiuscole ma è insensibile ad esse, Mercurial tratterà i nomi che differiscono solo per le maiuscole come uguali.</para>
   1.199 -
   1.200 -      <para id="x_572">Un importante aspetto di questo approccio è che è possibile eseguire il commit di un changeset su un file system sensibile alle maiuscole (tipicamente Linux o Unix) che creerà problemi per gli utenti di file system insensibili alle maiuscole (di solito Windows e MacOS). Se un utente Linux inserisce nel repository le modifiche a due file, uno chiamato <filename>myfile.c</filename> e l'altro chiamato <filename>MyFile.c</filename>, questi verranno memorizzati correttamente. E nella directory di lavoro di altri utenti Linux quei file verranno correttamente rappresentati come due file separati.</para>
   1.201 -
   1.202 -      <para id="x_573">Se un utente Windows o Mac estrae questo cambiamento, inizialmente non avranno alcun problema, perché il meccanismo di memorizzazione di un repository Mercurial è sicuro per le maiuscole. Tuttavia, appena provano ad aggiornare la directory di lavoro a quel changeset tramite <command role="hg-cmd">hg update</command>, o a unire il proprio lavoro con quel changeset tramite <command role="hg-cmd">hg merge</command>, Mercurial individuerà il conflitto tra i due nomi di file che il file system tratterebbe come lo stesso nome e impedirà all'aggiornamento o all'unione di avvenire.</para>
   1.203 +      <para id="x_571">Quando opera sulla directory di lavoro, Mercurial segue la politica di denominazione del file system su cui la directory di lavoro si trova. Se il file system conserva le maiuscole ma è insensibile ad esse, Mercurial tratterà i nomi che differiscono solo per le maiuscole come se fossero uguali.</para>
   1.204 +
   1.205 +      <para id="x_572">&Egrave; importante ricordare che questo approccio permette di eseguire su un file system sensibile alle maiuscole (tipicamente Linux o Unix) il commit di un changeset che creerà problemi per gli utenti di file system insensibili alle maiuscole (di solito Windows e MacOS). Se un utente Linux inserisce nel repository le modifiche a due file, uno chiamato <filename>myfile.c</filename> e l'altro chiamato <filename>MyFile.c</filename>, questi verranno memorizzati correttamente. E quei file verranno correttamente rappresentati come due file separati nella directory di lavoro di altri utenti Linux.</para>
   1.206 +
   1.207 +      <para id="x_573">Se un utente Windows o Mac estrae questo changeset, inizialmente non avrà alcun problema, perché il meccanismo di memorizzazione di un repository Mercurial è sicuro per le maiuscole. Tuttavia, appena tenta di aggiornare la directory di lavoro a quel changeset tramite <command role="hg-cmd">hg update</command>, o a unire il proprio lavoro con quel changeset tramite <command role="hg-cmd">hg merge</command>, Mercurial individuerà il conflitto tra i due nomi di file che il file system tratterebbe come lo stesso nome e impedirà all'aggiornamento o all'unione di avvenire.</para>
   1.208      </sect2>
   1.209  
   1.210      <sect2>
   1.211        <title>Correggere un conflitto tra maiuscole e minuscole</title>
   1.212  
   1.213 -      <para id="x_574">Se state usando Windows o Mac in un ambiente misto dove alcuni dei vostri collaboratori usano Linux o Unix, e Mercurial riporta un conflitto di ripiegamento delle maiuscole quando provate a eseguire <command role="hg-cmd">hg update</command> o <command role="hg-cmd">hg merge</command>, la procedura per correggere il problema è semplice.</para>
   1.214 -
   1.215 -      <para id="x_575">Trovate la macchina Linux o Unix più vicina, clonate il repository problematico su di essa e usate il comando <command role="hg-cmd">hg rename</command> di Mercurial per cambiare i nomi di qualsiasi file o directory che trasgredisce in modo che non siano più causa di conflitti di ripiegamento delle maiuscole. Inserite queste modifiche nel repository, eseguite <command role="hg-cmd">hg pull</command> o <command role="hg-cmd">hg push</command> attraverso i vostri sistemi Windows o MacOS e usate <command role="hg-cmd">hg update</command> per aggiornare la directory di lavoro alla revisione con i nomi senza conflitti.</para>
   1.216 +      <para id="x_574">Se state usando Windows o Mac in un ambiente misto dove alcuni dei vostri collaboratori usano Linux o Unix, e Mercurial riporta un conflitto di ripiegamento delle maiuscole (indicandolo con il termine inglese <emphasis>case folding</emphasis> nel messaggio di errore) quando provate a eseguire <command role="hg-cmd">hg update</command> o <command role="hg-cmd">hg merge</command>, la procedura per correggere il problema è semplice.</para>
   1.217 +
   1.218 +      <para id="x_575">Trovate la macchina Linux o Unix più vicina, clonatevi il repository problematico e usate il comando <command role="hg-cmd">hg rename</command> di Mercurial per cambiare i nomi di qualsiasi file o directory che crea complicazioni, in modo da non causare più alcun conflitto di ripiegamento delle maiuscole. Inserite queste modifiche nel repository, eseguite <command role="hg-cmd">hg pull</command> o <command role="hg-cmd">hg push</command> attraverso i vostri sistemi Windows o MacOS e usate <command role="hg-cmd">hg update</command> per aggiornare la directory di lavoro alla revisione che contiene i nomi senza conflitti.</para>
   1.219  
   1.220        <para id="x_576">Il changeset con i nomi in conflitto rimarrà nella cronologia del vostro progetto e non sarete comunque in grado di usare <command role="hg-cmd">hg update</command> per aggiornare la directory di lavoro a quel changeset su un sistema Windows o MacOS, ma potrete continuare a sviluppare senza impedimenti.</para>
   1.221      </sect2>