<para><application>&app;</application> è uno strumento grafico per l'unione e il confronto di file di testo. <application>&app;</application> è in grado di confrontare uno a fianco all'altro un qualsiasi numero di file e fornisce all'utente la possibilità di correggere manualmente la corrispondenza fra le righe e di modificare i file. <application>&app;</application> è anche in grado di recuperare le revisioni dei file dai repository Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS e Subversion per confrontarle e unirle.</para>
<para><application>&app;</application> è software libero; è possibile ridistribuirlo e modificarlo nel rispetto dei termini della <citetitle>GNU General Public License</citetitle> come pubblicata dalla Free Software Foundation sia essa nella versione 2 o (a propria scelta) qualsiasi versione successiva.</para>
<para><application>&app;</application> è distribuito con la speranza che possa essere utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di MERCANTABILITÀ o di ADATTABILITÀ A UN PARTICOLARE UTILIZZO. Consultare la <citetitle>GNU General Public License</citetitle> per maggiori dettagli.</para>
<para>Dovrebbe essere stata fornita una copia della <citetitle>GNU General Public License</citetitle> con <application>&app;</application>. È anche possibile ottenere una copia della <citetitle>GNU General Public License</citetitle> dalla Free Software Foundation visitando <ulinktype="http"url="http://www.fsf.org/">il loro sito web</ulink> o scrivendo a <address> Free Software Foundation, Inc. <street>51 Franklin St</street>, Fifth Floor, <city>Boston</city>, <state>MA</state><postcode>02110-1301</postcode><country>USA</country></address></para>
<para>Se viene specificata una opzione di aiuto, questa deve essere l'unico argomento inserito nella linea di comando. <application>&app;</application> uscirà subito dopo aver visualizzato le informazioni.</para>
<para>Apre delle schede di confronto separate per tutti i file interessati dal commit <replaceable>rev</replaceable> dai restanti percorsi indicati tra gli argomenti della linea di comando.</para>
<para>Apre delle schede di confronto separate per tutti gli elementi modificati dai restanti percorsi indicati tra gli argomenti della linea di comando.</para>
<para>Include nella scheda di confronto dei file la revisione <replaceable>rev</replaceable> del file successivo contenuto negli argomenti della linea di comando.</para>
<para>Usare le voci del menu <menuchoice><guimenu>File</guimenu><guimenuitem>Nuova unione a 2 file</guimenuitem></menuchoice>, <menuchoice><guimenu>File</guimenu><guimenuitem>Nuova unione a 3 file</guimenuitem></menuchoice> e <menuchoice><guimenu>File</guimenu><guimenuitem>Nuova unione a N file</guimenuitem></menuchoice> per creare ulteriori schede di confronto tra file di testo. I nomi dei file e le revisioni possono essere indicati sia come argomenti della linea di comando di <application>&app;</application> sia nei campi della finestra di apertura file.</para>
<para><application>&app;</application> visualizza i file uno a fianco all'altro inserendo degli spazi per allineare le righe di testo simili. Le differenze sono evidenziate con diversi colori di sfondo.</para>
<sect1id="file-comparison-summary">
<title>Sommario del confronto</title>
<para>Nel margine destro della finestra è visibile un sommario del confronto dei file. Il sommario mostra dove sono stati inseriti degli spazi per allineare le righe di testo corrispondenti ed evidenzia le differenze usando i colori. Le modifiche manuali sono evidenziate in verde. Un cursore blu identifica la regione che si sta visualizzando. La regione visualizzata può essere cambiata facendo clic in un qualsiasi punto del sommario.</para>
</sect1>
<sect1id="file-comparison-selecting">
<title>Selezionare</title>
<para>Le righe di testo possono essere selezionate utilizzando il mouse o la tastiera. Selezionare le righe di testo facendovi clic sopra con il puntatore del mouse. Fare clic e trascinare il puntatore per selezionare più righe. Mantenendo premuto <keycap>Maiusc</keycap> quando si fa clic la selezione corrente verrà estesa. Selezionare le righe con la tastiera premendo i tasti <keycap>Pag_Su</keycap>, <keycap>Pag_Giù</keycap> o le <keycap>frecce</keycap>. Tenere premuto <keycap>Maiusc</keycap> mentre si usano questi tasti per estendere la selezione. Spostare la selezione in un file adiacente utilizzando i tasti delle frecce sinistra e destra.</para>
</sect1>
<sect1id="file-comparison-alignment">
<title>Far corrispondere le righe</title>
<para>Il puntatore del mouse o la tastiera possono essere usati per allineare manualmente le righe di testo con i file adiacenti. Per allineare le righe di testo usando il puntatore del mouse, selezionare una riga di testo con il pulsante sinistro del mouse, fare clic con il tasto destro del mouse su una riga di testo del file adiacente e scegliere <menuchoice><guimenuitem>Allinea con la selezione</guimenuitem></menuchoice>. Per allineare le righe di testo con la tastiera, spostare la selezione con i tasti freccia, premere la barra spaziatrice per selezionare la riga corrente di testo, spostare la selezione con i tasti freccia a una riga di testo nel file adiacente e premere di nuovo la barra spaziatrice per indicare la riga di destinazione del testo. Premere il tasto <keycap>Esc</keycap> in qualsiasi momento per annullare l'operazione.</para>
<para>Usare la voce di menu <menuchoice><guimenuitem>Isola</guimenuitem></menuchoice> per evitare che le righe selezionate vengano fatte corrispondere a una qualsiasi riga dei file adiacenti.</para>
</sect1>
<sect1id="file-comparison-editing">
<title>Modificare</title>
<para>Premere il tasto <keycap>Invio</keycap> o fare doppio clic nell'area di testo per avviare la modalità di modifica del testo. Il cursore cambierà e nella barra di stato verrà visualizzato il numero della colonna in cui il cursore è posizionato.</para>
<para>Nella modalità di modifica testo, il testo può essere selezionato con il puntatore del mouse facendo clic e trascinando. La selezione corrente può essere estesa tenendo premuto il tasto <keycap>Maiusc</keycap> e muovendo il cursore facendo clic con il puntatore del mouse o premendo uno qualsiasi tra i <keycap>tasti freccia</keycap>, <keycap>home</keycap>, <keycap>fine</keycap>, <keycap>Pg_Su</keycap> o <keycap>Pg_Giù</keycap>. Le parole possono essere selezionate individualmente con un doppio clic sopra di esse con il puntatore del mouse. L'intera riga può essere selezionata con un triplo clic su di essa con il puntatore del mouse.</para>
<para>Modificare il testo digitando sulla tastiera. Le righe modificate verranno evidenziate in verde. Usare le voci di menu <menuchoice><guimenuitem>Annulla</guimenuitem></menuchoice> e <menuchoice><guimenuitem>Ripeti</guimenuitem></menuchoice> per annullare e ripetere le operazioni effettuate.</para>
<para>Premere il tasto <keycap>Esc</keycap> o fare clic nell'area di testo di un altro file con il pulsante sinistro del mouse per abbandonare la modalità di modifica del testo.</para>
</sect1>
<sect1id="file-comparison-merging">
<title>Unire</title>
<para>Usare i pulsanti delle differenze o le relative voci del menu per spostarsi tra i blocchi di differenze all'interno del file. <application>&app;</application> sposterà la selezione al gruppo di righe più vicino con differenze o modifiche.</para>
<para>Usare i pulsanti di unione o le relative voci di menu per copiare blocchi di testo nelle righe selezionate. Le voci di menu <menuchoice><guimenuitem>Annulla</guimenuitem></menuchoice> e <menuchoice><guimenuitem>Ripeti</guimenuitem></menuchoice> possono essere utilizzate per annullare e ripetere le operazioni effettuate in precedenza. Tutte le modifiche a un gruppo di righe possono essere annullate utilizzando la voce di menu <menuchoice><guimenuitem>Annulla modifiche</guimenuitem></menuchoice> indipendentemente dall'ordine con cui le modifiche sono state effettuate.</para>
</sect1>
</chapter>
<chapterid="version-control">
<title>Controllo di versione</title>
<para><application>&app;</application> è in grado di recuperare le revisioni dei file da diversi sistemi di controllo di versione attraverso la loro interfaccia da linea di comando. Il pacchetto di <application>&app;</application> compilato per Microsoft Windows è in grado di utilizzare sia Cygwin che le versioni native dei sistemi di controllo di versione supportati. Quando si utilizza <application>&app;</application> con Cygwin, assicurarsi che le preferenze di <application>&app;</application> relative a Cygwin descrivano correttamente il proprio sistema. Se la preferenza <guilabel>Aggiorna i percorsi per Cygwin</guilabel> esiste per un sistema di controllo di versione, deve essere abilitata per utilizzare la versione di Cygwin.</para>
<para>I sistemi di controllo di versione sono sensibili al percorso di sistema e ad altre impostazioni delle variabili di sistema. La preferenza <guilabel>Avvia dalla Bash di una shell di login</guilabel> può essere usata per impostare facilmente l'ambiente per i sistemi di controllo di versione Cygwin.</para>
<title>Visualizzare le modifiche non applicate</title>
<para>L'opzione <userinput>-m</userinput> farà aprire a <application>&app;</application> tante schede di confronto quanti sono i file con modifiche non applicate così come riportati dal sistema di controllo di versione. Questo è utile per controllare tutti i cambiamenti prima di effettuare il "commit" o di risolvere i conflitti di unione. Se non vengono specificati dei percorsi, verrà utilizzata la cartella di lavoro corrente. Per esempio, visualizzare tutte le proprie modifiche non applicate con il seguente comando:</para>
<para>La revisione predefinita di un file verrà usata per il confronto se viene specificato un solo file. Per esempio, il seguente comando visualizzerà un'unione a due file tra la revisione predefinita del file <filename>foo.C</filename> e la copia locale dello stesso file:</para>
<para>L'opzione<userinput>-r</userinput> può essere usata per specificare esplicitamente una particolare revisione di un file. Può essere utilizzato un qualsiasi identificatore della revisione riconosciuto dal sistema di controllo di versione. Se viene specificata un'unica revisione, il confronto verrà fatto rispetto al file locale. Per esempio, il seguente comando visualizzerà una unione a 2 file tra la revisione 123 del file <filename>foo.C</filename> e la copia locale dello stesso file:</para>
<para>Diverse revisioni dello stesso file possono essere confrontate specificando più opzioni <userinput>-r</userinput>. Per esempio, il seguente comando visualizzerà una unione a due file tra la revisione 123 del file <filename>foo.C</filename> e la revisione 321 dello stesso file:</para>
<para>I file locali possono essere combinati con file dal controllo di versione. Per esempio, il seguente comando visualizzerà una unione a 3 file tra la revisione MERGE_HEAD del file <filename>foo.C</filename>, il file locale <filename>foo.C</filename> e la revisione HEAD dello stesso file:</para>
<para>
<screen><prompt>$</prompt><userinput>diffuse -r MERGE_HEAD foo.C foo.C -r HEAD foo.C</userinput></screen>
</para>
<para>L'opzione <userinput>-c</userinput> può essere usata per specificare facilmente una coppia di revisioni con numerazioni successive. Per esempio, questo comando visualizzerà una unione a 2 file tra la revisione 1.2.2 del file <filename>foo.C</filename> e la revisione 1.2.3 dello stesso file:</para>
<para><application>&app;</application> non limita il numero di riquadri che possono essere usati per confrontare i file. Gli input a una unione Git a più direzioni possono essere visualizzati con un comando di questo tipo:</para>
<para>Le risorse possono essere utilizzate per personalizzare vari parametri dell'aspetto e del comportamento di <application>&app;</application>. È possibile infatti modificare i colori utilizzati nell'interfaccia, personalizzare le scorciatoie da tastiera, aggiungere o sostituire regole per il riconoscimento della sintassi o modificare la mappatura tra estensione del file e regole di riconoscimento della sintassi.</para>
<para>Quando <application>&app;</application> viene avviato, legge i comandi dal file di inizializzazione del sistema <filename>/etc/diffuserc</filename> (<filename>%CARTELLA_DI_INSTALLAZIONE%\diffuserc</filename> su Microsoft Windows) e in seguito il file di inizializzazione personale <filename>~/.config/diffuse/diffuserc</filename> (<filename>%HOME%\.config\diffuse\diffuserc</filename> su Microsoft Windows). Questo comportamento può essere modificato con le opzioni di configurazione <userinput>--no-rcfile</userinput> e <userinput>--rcfile</userinput>. Un analizzatore di lessico simile alla Bourne shell è utilizzato per analizzare i comandi di inizializzazione. I commenti e i caratteri speciali possono essere inseriti utilizzando lo stesso stile di "escaping" utilizzato per gli script della Bourne shell.</para>
<para>Elabora i comandi di inizializzazione dal file <replaceable>file</replaceable>. Il file di inizializzazione viene elaborato una sola volta.</para>
<para>Collega una combinazione di tasti a <replaceable>azione</replaceable> quando è utilizzata in <replaceable>contesto</replaceable>. Specificare i modificatori <keycap>Maiusc</keycap> e <keycap>Control</keycap> precedendo rispettivamente <userinput>Maiusc+</userinput> e <userinput>Ctrl+</userinput> a <replaceable>combinazione_tasti</replaceable>. I tasti normalmente modificati da <keycap>Maiusc</keycap> dovrebbero essere specificati utilizzando il loro valore modificato se <replaceable>combinazione_tasti</replaceable> comprende il tasto <keycap>Maiusc</keycap>; per esempio <userinput>Ctrl+g</userinput> e <userinput>Maiusc+Ctrl+G</userinput>. Rimuovere i collegamenti per <replaceable>combinazione_tasti</replaceable> specificando <userinput>None</userinput> come <replaceable>azione</replaceable>.</para>
</listitem>
</varlistentry>
</variablelist>
<sect2id="resources-keybindings-menu">
<title>Keybinding delle voci di menu</title>
<para>Usare <userinput>menu</userinput> come <replaceable>contesto</replaceable> per definire i keybinding per le voci dei menu. I seguenti valori sono validi per il campo <replaceable>azione</replaceable>:</para>
<para>Voce di menu <menuchoice><guimenu>Visualizza</guimenu><guisubmenu>Sintassi</guisubmenu><guimenuitem><replaceable>syntax</replaceable></guimenuitem></menuchoice></para>
<para>Usare <userinput>line-mode</userinput> come <replaceable>contesto</replaceable> per definire i keybinding per la modalità di modifica delle righe. I seguenti valori sono validi per il campo <replaceable>azione</replaceable>:</para>
<para>Usare <userinput>align-mode</userinput> come <replaceable>contesto</replaceable> per definire i keybinding per la modalità di modifica dell'allineamento. I seguenti valori sono validi per il campo <replaceable>azione</replaceable>:</para>
<para>Usare <userinput>character-mode</userinput> come <replaceable>contesto</replaceable> per definire i keybinding per la modalità di modifica testo. I seguenti valori sono validi per il campo <replaceable>azione</replaceable>:</para>
<term><userinput>[ colour | color ] <replaceable>nome</replaceable><replaceable>rosso</replaceable><replaceable>verde</replaceable><replaceable>blu</replaceable></userinput></term>
<listitem>
<para>Dichiara una risorsa colore chiamata <replaceable>nome</replaceable>. Le singole componenti del colore devono essere espresse come valori compresi tra 0 e 1.</para>
</listitem>
</varlistentry>
</variablelist>
<sect2id="resources-colours-used">
<title>Risorse colori utilizzati</title>
<para><application>&app;</application> utilizza le seguenti risorse colore:</para>
<variablelist>
<varlistentry>
<term><userinput>alignment</userinput></term>
<listitem>
<para>Colore utilizzato per indicare una riga selezionata per l'allineamento manuale.</para>
<para>Dichiara un nuovo stile di sintassi chiamato <replaceable>nome</replaceable>. Il riconoscimento della sintassi utilizza una semplice macchina di stato che cambia di stato nel momento in cui alcuni schemi risultano corrispondenti. Lo stato iniziale per la macchina sarà <replaceable>stato_iniziale</replaceable>. Tutti i caratteri che non corrispondono ad alcuno schema verranno marcati come <replaceable>default_tag</replaceable> per il riconoscimento. Lo stile di sintassi chiamato <replaceable>nome</replaceable> può essere rimosso omettendo <replaceable>stato_iniziale</replaceable> e <replaceable>default_tag</replaceable>.</para>
<para>Specifica che i file con un nome corrispondente a <replaceable>schema</replaceable> devono essere evidenziati utilizzando lo stile di sintassi chiamato <replaceable>nome</replaceable>. Gli schemi usati per far corrispondere i file utilizzati con lo stile di sintassi chiamato <replaceable>nome</replaceable> possono essere rimossi omettendo <replaceable>schema</replaceable>.</para>
<para>Specifica che i file con una prima riga corrispondente a <replaceable>schema</replaceable> devono essere evidenziati utilizzando lo stile di sintassi chiamato <replaceable>nome</replaceable>. Gli schemi usati per far corrispondere i file utilizzati con lo stile di sintassi chiamato <replaceable>nome</replaceable> possono essere rimossi omettendo <replaceable>schema</replaceable>.</para>
<para>Aggiunge uno schema allo stile di sintassi dichiarato precedentemente.Gli schemi sono analizzati uno alla volta nell'ordine dichiarato fino a quando non viene trovata una corrispondenza. Uno schema sarà utilizzato per far corrispondere dei caratteri solamente se la macchina di stato si trova nello stato <replaceable>stato_iniziale</replaceable>. La macchina di stato si sposterà sullo <replaceable>stato_finale</replaceable> se lo schema definito da <replaceable>schema</replaceable> verrà corrisposto. La corrispondenza dello schema ignorerà le differenze tra maiuscole e minuscole se è specificata l'opzione <userinput>ignorecase</userinput>. Tutti i caratteri per cui è stata trovata una corrispondenza verranno identificati con <replaceable>tag</replaceable> per evidenziarli.</para>