Questo argomento descrive il modo in cui WinMerge rileva e visualizza le differenze all'interno dei file di testo e illustra semplici operazioni di confronto e unione dei file. Per informazioni correlate sui file esadecimali vedi Confronto in formato esadecimale.
Di solito confrontiamo due file che sono in qualche modo correlati, ad esempio due versioni modificate in momenti diversi o da persone diverse. Se esamini due di questi file puoi solitamente visualizzare alcune aree simili e identificare anche diversi tipi di differenze: caratteri e parole diversi, righe diverse, persino interi blocchi di testo diversi. Ma cercare di comprendere tutte le differenze tra due file scansionandoli nel tuo editor preferito può essere noioso e soggetto a errori. Strumenti specializzati di differenza/unione come WinMerge sono progettati per rendere questo lavoro più sistematico ed efficiente.
Una semplice utilità di differenza usata dalla maggior parte delle persone è un controllo ortografico: ti guida sistematicamente attraverso un documento, evidenzia le parole diverse da quelle presenti nel dizionario e ti aiuta a risolvere ogni problema di ortografia. Tuttavia, guardare solo i caratteri e le parole non è un modo efficace per comprendere le differenze tra più file. Per questo motivo, molte utilità di differenza usano invece le linee come unità di confronto di base.
WinMerge usa anche le linee come unità di differenza di base. Parole e caratteri non vengono trattati individualmente nelle operazioni di confronto e unione. Per illustrare, considera due file identici tranne che per una riga diversa. Se le due versioni della riga hanno quattro parole diverse e una versione ha uno spazio extra, allora diciamo che il file ha una differenza, non cinque.
Se è più veloce confrontare le righe che le parole, a volte è anche utile trattare un intero blocco di righe come un'unica differenza, invece di confrontare una riga alla volta. Come vedremo più avanti, il rilevamento delle differenze su più righe rende anche la fusione più efficiente.
Questa sezione offre un semplice esempio che dimostra come confrontare le differenze di riga tra due file in WinMerge:
Usando un editor di testo, crea due file con i nomi e i contenuti visualizzati qui, facendo attenzione a preservare esattamente le parole e le interruzioni di riga:
File1:
È lento confrontare le parole e personaggi.invece, WinMerge confronta le linee. Credeteci altrimenti.
File2:
È lento confrontare le parole. WinMerge confronta le linee. Che tu ci creda o no.
Avvia WinMerge. Ad esempio, fai doppio clic sul
collegamento sul desktop WinMerge.
Nella finestra di dialogo Seleziona file e cartelle, specifica
File1 come primo file e
File2 come 2° file, quindi
seleziona . La finestra Confronto file
visualizza i due file nel riquadro File sinistro e destro, in questo modo:

Gli elementi sono descritti più dettagliatamente in Confronto e unione di file di testo. Ecco alcune funzionalità che dovresti notare in questo esempio:
Il messaggio nella barra di stato nella parte inferiore della finestra WinMerge informa che sono state rilevate due differenze.
I blocchi di differenza sono contrassegnati con il colore di sfondo della differenza (oro, per impostazione predefinita).
È possibile abilitare le differenze di linea per contrassegnare il testo modificato all'interno dei blocchi di differenze, usando il colore di sfondo della parola (giallo chiaro, per impostazione predefinita).
Le linee identiche non sono contrassegnate: hanno lo sfondo bianco, come la terza linea nell'esempio.
Si noti che nel riquadro di confronto sinistro la seconda riga contiene del
testo: l'altro riquadro presenta una riga grigia vuota nella stessa
posizione. Questa riga vuota non esiste nel file sorgente
File2, quindi cosa ci fa in WinMerge?
WinMerge inserisce una o più righe vuote grigie in una versione di una
differenza quando l'altra versione ha più righe. Queste linee grigie vuote
non rappresentano righe vuote nel file sorgente sono solo segnaposto nel
display. Lo scopo delle linee segnaposto è mantenere allineate verticalmente
le versioni sinistra e destra delle differenze. Pertanto, nel nostro
esempio, il testo WinMerge confronta le
righe, appare fianco a fianco nella finestra di confronto,
anche se si trovano su righe diverse nei file di origine. Ciò rende più
semplice confrontare le differenze in WinMerge rispetto a un editor
convenzionale.
Una conseguenza delle righe vuote è che entrambi i riquadri della finestra Confronto file visualizzano sempre lo stesso numero totale di righe, anche se i file di origine non lo fanno.
Ora che hai compreso come WinMerge rileva e visualizza le differenze, puoi usare le funzioni di confronto in modo efficace, comevisualizzato nei passaggi successivi.
Seleziona
nella barra degli strumenti (o
premi Alt+Invio). Se questo pulsante non è abilitato (ad esempio, se il cursore
si trova su una riga diversa), seleziona
Prima differenza (o premi Alt+Home).
Quando selezioni una differenza, le due versioni vengono caricate nel riquadro Diff. Il riquadro Diff conferma quali righe sono incluse in una differenza e consente di esaminarle isolandole dal resto del file. Nel nostro esempio, la Differenza 1 ha chiaramente due linee.

Seleziona
nella barra degli strumenti (o
fai clic su Alt+Invio). Questo salta sulla riga identica (che non è una differenza) e
seleziona l'ultima riga.
Hai raggiunto la fine del file e hai avuto la possibilità di esaminare ogni differenza. Questo era un esempio banale – c'erano solo due differenze – e ci sono altri modi per confrontare le differenze in WinMerge. Ma dimostra l'efficienza dell'uso dei controlli di navigazione WinMerge.
Lo scopo dell'unione è combinare le modifiche di due file in un unico file. L'unione estende i concetti e le funzioni usate nell'operazione di confronto: leggere la sezione precedente prima di iniziare questa sezione.Oltre a rilevare le differenze tra due versioni di file, risolviamo le differenze e salviamo il risultato in un'unica versione target.
L'unione di file rende possibile lo sviluppo simultaneo ed è un'attività comune negli ambienti di team. Ad esempio, supponiamo che tu e un'altra persona vogliate aggiungere codice allo stesso file di programma contemporaneamente. Entrambi iniziate con una copia identica del file, ma durante lo sviluppo create versioni separate che non sono identiche. Ad un certo punto, le due versioni devono essere unite in un'unica versione che preservi le modifiche di ciascun contributore.
L'unione può essere richiesta (o addirittura avviata) da sistemi di controllo della versione come Subversion e Git. Ad esempio, il tuo sistema di controllo della versione potrebbe impedirti di inviare modifiche al suo repository a causa di conflitti di unione. Può verificarsi un conflitto se qualcun altro ha archiviato una versione diversa dello stesso file mentre stavi lavorando sulla tua versione e il sistema di controllo della versione non è stato in grado di unire automaticamente le differenze. Quando ciò accade, potresti dover unire le versioni in conflitto prima di riprovare a contribuire con la tua versione. Molti sistemi dispongono di strumenti integrati per la differenza e l'unione, ma potresti preferire usare WinMerge.
Proprio come per il confronto, usi i controlli della barra degli strumenti di WinMerge (o le scorciatoie da tastiera) per esaminare sistematicamente le differenze. Risolvi ogni differenza copiando il candidato sinistro o destro sull'altro lato. Una volta risolte tutte le differenze, WinMerge ti informa che tutte le differenze sono state risolte (le versioni sono identiche) e che l'unione è terminata.
Questo breve esercizio dimostra come usare i controlli nella finestra Confronta file in modo sistematico per unire i file semplicivisualizzati in precedenza:
Seleziona
nella barra degli strumenti per
selezionare la prima differenza. Se questo pulsante non è abilitato, fai
invece clic su
.
Seleziona
per unire la Differenza 1 da File1 a
File2. In File2, nota che la
singola riga di differenza è sostituita dalle due righe di
File1, e la riga grigia vuota ora è scomparsa.
Seleziona
per selezionare Differenza
2. Questo è più semplice che trovare e selezionare la differenza da solo. È
particolarmente utile se vuoi esaminare tutte le differenze senza
tralasciarne nessuna accidentalmente.
Seleziona
per unire la differenza 2 da File2
a File1.
Il messaggio che i file sono identici ti dice che l'unione è completa:

Per chiudere il messaggio seleziona . Il messaggio
di differenza di stato cambia da Differenza 1 di
1 a identico.
Premi Ctrl+S per salvare le modifiche.
Sebbene sia molto semplice, questo esempio dimostra una metodologia di base che puoi usare per eseguire un confronto di qualsiasi lunghezza, unendo ciascuna differenza una per una finché non ottieni il risultato desiderato.
Sei tu a controllare dove viene conservato il risultato dell'unione. La finestra Confronto file WinMerge non dispone di un riquadro dei risultati separato, come fanno alcuni strumenti di unione. Quindi la strategia più semplice è salvare le modifiche su uno, due o tre file sorgente. Premi Ctrl+S in qualsiasi momento per salvare le modifiche correnti su tutti i file; in alternativa, seleziona → , → o → per salvare soloun file.
Per scrivere su un terzo file invece che su uno dei file sorgente, usa → . Ad esempio, il file di destinazione potrebbe essere il file delle differenze o dei conflitti generato da un sistema di controllo della versione.
Allo stesso modo, nella riga di comando di WinMerge, puoi lasciare entrambe
o tutte e tre le versioni sorgente invariate usando l'argomento facoltativo
outputfile , come descritto in Riga di comando.