# El manual del &kdiff3;

## Introducció

### Un altre frontal de diferències?

Hi ha diverses eines gràfiques de diferències. Perquè triar el &kdiff3;? Deixeu-me dir per què el vaig escriure.

El &kdiff3; va començar perquè vaig haver de fer una fusió difícil. La fusió és necessària quan diverses persones treballen en els mateixos fitxers en un projecte. Una fusió pot ser una cosa automatitzada, quan l'eina de fusió no només té fitxers nous (anomenats «branques»), sinó també el fitxer original (anomenat «base»). L'eina de fusió prendrà qualsevol modificació que només s'hagi realitzat en una branca. Quan diversos col·laboradors canvien les mateixes línies, l'eina de fusió detectarà els conflictes que s'han de resoldre manualment.

Llavors la fusió serà difícil perquè un col·laborador ha canviat moltes coses i ha corregit el sagnat en molts llocs. Un altre col·laborador també ha canviat molt text en el mateix fitxer, el qual ha resultat en diversos conflictes de fusió.

L'eina que vaig emprar llavors, només mostrava les línies canviades, però no el que s'havia canviat dins d'aquestes línies. I no hi havia informació només sobre on s'havia canviat el sagnat. La fusió va ser un petit malson.

De manera que aquest va ser el començament. La primera versió podia mostrar les diferències dins d'una línia i mostrava les diferències dels espais en blanc. Més tard es van anar afegint moltes altres característiques per a fer augmentar la utilitat.

Per exemple, si voleu comparar un text amb rapidesa, podreu copiar-lo al porta-retalls i enganxar-lo a qualsevol de les finestres de diferències.

Una característica que va requerir un gran esforç va ser la facilitat de comparació i fusió de les carpetes, la qual va convertir el programa gairebé en tot un navegador de fitxers.

Espero que el &kdiff3; també funcioni per a vosaltres. Gaudiu-ne!

Joachim Eibl (2003)

### Captures de pantalla i característiques

Aquesta captura de pantalla mostra la diferència entre dos fitxers de text (emprant una versió inicial del &kdiff3;):

La fusió a 3 bandes està totalment admesa. Aquesta és útil si dues persones canvien el codi de forma independent. El fitxer original (la base) s'utilitzarà per a ajudar al &kdiff3; a seleccionar automàticament els canvis correctes. L'editor de la fusió que hi ha a sota les finestres de diferències permet resoldre els conflictes, mentre mostra el resultat que obtindreu. Fins i tot podreu editar la sortida. Aquesta captura de pantalla mostra els tres fitxers fusionats des de l'entrada:

El &kdiff3; també ajuda a comparar i fusionar carpetes senceres. Aquesta captura de pantalla mostra el &kdiff3; durant una fusió de carpetes:

### Més característiques

#### Visualitzador de diferències línia per línia i caràcter per caràcter

En utilitzar les possibilitats d'una pantalla gràfica en color, el &kdiff3; mostrarà amb exactitud quina és la diferència. Us agradarà quan hàgiu de fer moltes revisions de codi.

#### Vegeu d'una mirada les diferències en els espais en blanc

Els espais i les tabulacions que difereixen apareixeran visibles. Quan les línies només difereixin en la quantitat d'espais en blanc, això es veurà d'una ullada a la columna del resum al costat esquerre. (No més preocupacions quan algú canviï el sagnat).

#### Diferències triples

Analitzeu tres fitxers i vegeu en què difereixen.

Les finestres esquerra/mig/dreta s'anomenen A/B/C i tenen el color blau/verd/magenta respectivament.

Si un fitxer és el mateix i un fitxer és diferent en una línia, el color mostrarà quin fitxer difereix. El color vermell indicarà que els altres dos fitxers són diferents.

#### Fusió còmoda de dos o tres fitxers des de l'entrada

Es pot emprar el &kdiff3; per a fusionar dos o tres fitxers des de l'entrada i els fusionarà automàticament tant com sigui possible. El resultat es presentarà en una finestra editable on la majoria dels conflictes es podran resoldre amb un sol clic del ratolí: Seleccioneu els respectius botons ... a les finestres A/B/C per a seleccionar la font que s'emprarà. També podreu seleccionar més d'una font. Atès que aquesta finestra de sortida és un editor, fins i tot els conflictes que necessiten correccions addicionals es podran resoldre aquí sense requerir cap altra eina.

#### I...

- Navegació ràpida mitjançant botons.

- Un clic del ratolí en una columna del resum sincronitzarà totes les finestres per a mostrar la mateixa posició.

- Seleccioneu i copieu des de qualsevol finestra i enganxeu-ho a la finestra de resultats de la fusió.

- Columna de la visió de conjunt que mostra on es troben els canvis i els conflictes.

- Els colors es poden ajustar a les vostres preferències específiques.

- Mida ajustable de la pestanya.

- Opció per a inserir espais en lloc de tabulacions.

- Obriu fitxers amb comoditat mitjançant el diàleg o especifiqueu els fitxers a la línia d'ordres.

- Cerqueu cadenes en totes les finestres de text amb els elements de menú Edita Cerca (&Ctrl;F) i Edita Cerca la següent (F3).

- Mostra els números de línia per a cada línia.

- Enganxeu des del porta-retalls o arrossegueu el text a una finestra d'entrada de diferències.

- Transparència de xarxa a través del KIO.

- Es pot emprar com a visualitzador de diferències des del &kdevelop; 3.

- Ajust de les paraules per a les línies llargues.

- Admet Unicode, UTF-8 i altres còdecs.

- Admet els idiomes de dreta a esquerra.

- ...

## Comparar i fusionar fitxers

### Opcions de la línia d'ordres

#### Comparar 2 fitxers:

    kdiff3 fitxer_1 fitxer_2

#### Fusionar 2 fitxers:

    kdiff3 fitxer_1 fitxer_2 -m
       kdiff3 fitxer_1 fitxer_2 -o fitxer_de_sortida

#### Comparar 3 fitxers:

    kdiff3 fitxer_1 fitxer_2 fitxer_3

#### Fusionar 3 fitxers:

    kdiff3 fitxer_1 fitxer_2 fitxer_3 -m
    kdiff3 fitxer_1 fitxer_2 fitxer_3 -o fitxer_de_sortida

Cal tenir en compte que el `fitxer_1` es tractarà com la base del `fitxer_2` i el `fitxer_3`.

#### Cas especial: fitxers amb el mateix nom

Si tots els fitxers tenen el mateix nom però estan en carpetes diferents, podreu reduir el treball de tipografia especificant el nom de fitxer només per al primer fitxer, &pex;:

    kdiff3 carpeta_1/nom_fitxer carpeta_2 carpeta_3

#### Línia d'ordres per a iniciar una comparació o fusió de carpetes:

Això és molt similar, però ara es tracta de carpetes.

    kdiff3 carpeta_1 carpeta_2
       kdiff3 carpeta_1 carpeta_2 -o carpeta_de_destinació
       kdiff3 carpeta_1 carpeta_2 carpeta_3
       kdiff3 carpeta_1 carpeta_2 carpeta_3 -o carpeta_de_destinació

Per a comparar i fusionar carpetes, encara podeu continuar llegint aquí.

#### D'altres opcions a la línia d'ordres

Per a veure tots els tipus d'opcions disponibles de la línia d'ordres, escriviu

    kdiff3 --help

Sortida d'exemple:

    Opcions:
      -m, --merge               Fusiona l'entrada.
      -b, --base fitxer         Fitxer base explícit. Per compatibilitat amb certes eines.
      -o, --output fitxer       Fitxer de sortida. Implica -m. P. ex.: -o fitxer_nou.txt
      --out fitxer              Fitxer de sortida, de nou. (Per compatibilitat amb certes eines).
      --noauto                  Ignora --auto i mostra sempre la IGU.
      --auto                    Sense IGU si tots els conflictes es poden resoldre automàticament. (Necessita -o fitxer)
      --L1 àlies_1              Substitueix el nom visible per al fitxer d'entrada 1 (base).
      --L2 àlies_2              Substitueix el nom visible per al fitxer d'entrada 2.
      --L3 àlies_3              Substitueix el nom visible per al fitxer d'entrada 3.
      -L, --fname àlies         El nom visible alternatiu per a la substitució. Proporcioneu-lo una vegada per a cada entrada.
      --cs cadena               Substitueix una opció de la configuració. Useu-lo un cop per a cada opció. P. ex.: --cs "AutoAdvance=1"
      --confighelp              Mostra una llista de les opcions de configuració amb els valors actuals.
      --config fitxer           Usa un fitxer de configuració diferent.

L'opció `--cs` permet ajustar un valor de configuració que d'una altra manera només es podrà ajustar a través dels diàlegs de configuració. Fixeu-vos, que quan finalitzi el &kdiff3;, el valor modificat s'emmagatzemarà juntament amb les altres opcions. Amb `--confighelp` trobareu els noms dels elements disponibles amb el seu valor actual.

Mitjançant `--config` podreu especificar un fitxer de configuració diferent. Quan empreu sovint el &kdiff3; amb configuracions completament diferents, això permetrà canviar amb facilitat entre elles.

#### Opcions a ignorar de la línia d'ordres

Molta gent vol emprar el &kdiff3; amb algun sistema per al control de versions. Però quan aquest sistema per al control de versions crida al &kdiff3; utilitzant paràmetres de la línia d'ordres que el &kdiff3; no reconeix, llavors el &kdiff3; finalitzarà amb un error. L'element Integració en el diàleg de configuració permet especificar paràmetres de la línia d'ordres que el &kdiff3; haurà d'ignorar. Apareixeran en l'ús de l'ajuda com en aquest exemple:

    --foo                     Ignorada. (Definida per l'usuari).

Opcions a ignorar de la línia d'ordres:

- Una llista d'opcions, separades per punt i coma «;». Quan aparegui una d'aquestes opcions a la línia d'ordres, el &kdiff3; la ignorarà i s'executarà sense informar d'un error. (De manera predeterminada és «`u;query;html;abort`»).

Quan això no és suficient, es recomana escriure un script d'intèrpret d'ordres que faci la traducció de l'opció.

### Diàleg d'obertura

Atès que la majoria dels fitxers d'entrada hauran de ser seleccionables, el programa té un diàleg d'obertura especial:

El diàleg d'obertura permet editar els noms dels fitxers, seleccionant un fitxer mitjançant l'explorador de fitxers mitjançant botó Fitxer... o permet escollir fitxers recents des de les llistes desplegables. Si torneu a obrir el diàleg, els noms actuals encara hi romandran. El tercer fitxer d'entrada no és obligatori. Si l'entrada per a C roman buida, només es realitzarà una anàlisi de diferències entre dos fitxers.

També podreu seleccionar una carpeta mitjançant el botó Carpeta.... Si s'especifica una carpeta per a A, s'iniciarà una comparació/fusió de carpetes. Si A especifica un fitxer però B, C o la sortida especifiquen una carpeta, llavors el &kdiff3; utilitzarà el nom de fitxer d'A en les carpetes especificades.

Si se selecciona la casella de selecció Fusiona, llavors la línia Sortida esdevindrà editable. Però no caldrà especificar immediatament el nom del fitxer de sortida. També ho podreu posposar fins al desament.

El botó Configura... obrirà el diàleg de configuració, de manera que podreu establir les opcions abans d'executar l'anàlisi.

### Enganxar i arrossegar a l'entrada

De vegades voldreu comparar parts d'un text que no prové d'un fitxer. El &kdiff3; també permet enganxar text des del porta-retalls a la finestra d'entrada de diferències que té el focus. L'anàlisi de les diferències ocorrerà immediatament. En el diàleg d'obertura no necessitareu especificar cap fitxer, simplement tanqueu-lo mitjançant el botó Cancel·la.

També podreu utilitzar l'acció arrossegar i deixar anar: arrossegueu un fitxer des d'un gestor de fitxers o el text seleccionat des d'un editor i deixeu-lo anar en una finestra d'entrada de diferències.

Quina és la idea? De vegades, un fitxer contindrà dues funcions similars, però comprovar com són de similars en realitat és un gran esforç si primer heu de crear dos fitxers i després carregar-los. Ara podreu simplement copiar, enganxar i comparar les seccions rellevants.

Actualment no es pot arrossegar res des del &kdiff3;. Només s'admet deixar anar a la finestra d'entrada de diferències.

Alguns editors encara interpreten l'arrossegament i deixat anar en un altre programa com un retallat (en lloc de còpia) i enganxat. Llavors podríeu perdre les vostres dades originals.

### Comparar fitxers i interpretar la informació a les finestres d'entrada

#### Línia d'informació

A la part superior de cada finestra de text es troba la seva «línia d'informació». Les línies d'informació de les finestres d'entrada contenen una lletra A, B o C, el nom editable del fitxer, un botó per a examinar i el número de línia de la primera línia visible a la finestra. (Cal tenir en compte que la finestra C és opcional). Cada línia d'informació apareix en un color diferent.

Quan seleccioneu un altre fitxer mitjançant l'exploració o acabeu d'editar el nom del fitxer prement &Intro;, el fitxer nou es carregarà i es compararà amb el/s fitxer/s ja carregat/s.

#### Donar color

Les tres finestres d'entrada tenen assignades les lletres A, B i C. A té color blau, B té verd i C té magenta. (Aquests són els valors predeterminats, però es poden canviar a l'element Color en el diàleg de configuració).

Quan es detecta una diferència, el color mostrarà quin fitxer d'entrada difereix. Quan difereixen els altres dos fitxers d'entrada, el color utilitzat per a expressar-ho serà el vermell de manera predeterminada (l'opció Color del conflicte a l'element Color en el diàleg de configuració). Aquest esquema de colors és especialment útil en el cas de tres fitxers d'entrada, els quals es veuran a la següent secció (Fusionar).

#### Columna del resum

A l'esquerra de cada text hi ha la columna del «resum». Si ocorre cap diferència en una línia, la columna del resum mostrarà el color respectiu. Per a una diferència de només espais en blanc, el resum estarà marcat. Per als llenguatges de programació on l'espai en blanc no és tan important, això és útil per a veure d'una ullada si s'ha modificat quelcom important. (En C/C++, l'espai en blanc només és interessant dins de les cadenes, comentaris, per al preprocessador i en algunes situacions molt esotèriques).

La línia vertical que separa la columna del resum i el text s'interromprà si el fitxer d'entrada no hi tenia línies. Quan estigui habilitat l'ajust de paraules, aquesta línia vertical apareixerà puntejada per a les línies ajustades.

#### Columna de la visió de conjunt

A la part dreta, es veu una columna «visió de conjunt» a l'esquerra de la barra de desplaçament vertical. Mostra la columna del resum comprimida de l'entrada A. Totes les diferències i els conflictes seran visibles d'una ullada. Quan només s'emprin dues finestres d'entrada, totes les diferències apareixeran aquí en vermell perquè cada diferència també és un conflicte. Un rectangle negre emmarcarà la part visible de les entrades. Per als fitxers d'entrada molt llargs, quan el nombre de línies d'entrada sigui més gran que l'alçada de la columna del resum en píxels, diverses línies d'entrada compartiran una línia del resum. Llavors, un conflicte tindrà la màxima prioritat sobre les diferències senzilles, les quals tindran prioritat sobre sense canvis, de manera que aquí no es perdrà cap diferència o conflicte. En fer clic a dins d'aquesta columna del resum, es mostrarà el text corresponent.

#### Alinear les línies manualment

De vegades, l'algoritme col·loca línies incorrectes una al costat de l'altra. O voldreu comparar una part del text amb el text en una posició completament diferent en l'altre fitxer. Per a aquestes situacions, podreu indicar manualment al &kdiff3; que s'alineï amb certes línies. Seleccioneu amb el ratolí el text per al qual voleu millorar l'alineació com ho faríeu per a copiar i enganxar a la primera vista de diferències i després escolliu l'element de menú Vista de les diferències Afegeix alineació manual de les diferències (&Ctrl;Y). Apareixerà una barra taronja a la columna de la visió de conjunt al costat del text triat. Repetiu-ho per a la segona i (si està disponible) per a la tercera vista de diferències. El &kdiff3; tornarà immediatament a calcular les diferències cada vegada que ho feu, i alinearà les línies triades. Per descomptat, algunes de les línies intermèdies prèviament coincidents podrien no coincidir més.

Actualment, la fusió no admet l'ús de l'ajuda del manual de «diff».

#### Unir i dividir manualment seccions del «diff»

En alguns casos, el &kdiff3; veurà massa o molt poques seccions de diferències a fusionar. En aquest cas, podreu unir o dividir les seccions existents.

Afegiu seccions noves seleccionant primer el text en les línies que estan juntes en qualsevol finestra d'entrada (com per a copiar al porta-retalls). Després trieu l'element de menú Fusiona Divideix les diferències a la selecció. Les divisions s'afegiran a sobre de la primera línia i a sota de l'última línia del text seleccionat. Si només voleu afegir una secció, seleccioneu el text que comença en una altra secció dividida.

Per a unir seccions en qualsevol finestra d'entrada, seleccioneu quelcom en les línies de les seccions a unir. (També podreu unir diverses seccions en un sol pas). Després, trieu l'element de menú Fusiona Uneix les diferències seleccionades.

### Fusionar i la finestra de l'editor per a la sortida de la fusió

La finestra de l'editor per a la sortida de la fusió (a sota de les finestres d'entrada de diferències) també té una línia d'informació a la part superior que mostra Sortida:, el nom del fitxer i l'etiqueta `[Modificat]` si heu editat quelcom. En general, contindrà una mica de text mitjançant les instal·lacions de fusió automàtica, però sovint també contindrà conflictes.

El desament estarà inhabilitat fins que es resolguin tots els conflictes! (Utilitzeu els botons Ves al conflicte no resolt anterior/següent per a trobar els conflictes restants).

Amb només dos fitxers d'entrada, cada diferència també és un conflicte que s'haurà de resoldre manualment.

Amb tres fitxers d'entrada, el primer fitxer es tractarà com a base, mentre que el segon i el tercer contindran les modificacions. Quan en qualsevol línia només hagin canviat l'entrada B o C però no totes dues, llavors se seleccionarà automàticament la font canviada. Només quan B i C hagin canviat en les mateixes línies, l'eina detectarà un conflicte que s'haurà de resoldre manualment. Quan B i C siguin iguals, però no iguals que A, llavors se seleccionarà C.

#### La columna del resum

La finestra de l'editor per a la sortida de la fusió també té una columna del resum a l'esquerra. Mostra la lletra de l'entrada des de la qual s'ha seleccionat una línia o res si les tres fonts són iguals en una línia. Per als conflictes, mostrarà un signe d'interrogació «?» i la línia mostrarà «<Conflicte de fusió>», tot en vermell. Com resoldre els conflictes línia per línia triga molt temps, les línies s'agruparan en grups que tenen la mateixa diferència i característiques del conflicte. Però només els conflictes d'espai en blanc se separaran dels conflictes que no són d'espai en blanc per a facilitar la fusió dels fitxers si el sagnat s'ha canviat en moltes línies.

#### Establir el grup actual, sincronitzar la fusió i la posició de la vista de les diferències

En fer clic a dins de la columna del resum amb el &BER; a qualsevol finestra, el començament del grup que pertanyi a aquesta línia es mostrarà en totes les finestres. Aquest grup es convertirà en el «grup actual». Es ressaltarà amb l'opció Color de fons de les diferències de l'interval actual de l'element Integració en el diàleg de configuració i apareixerà una barra negra a la banda esquerra del text.

#### Triar les entrades A, B o C per als conflictes actuals i editar

La barra de botons que hi ha a sota de la barra de menús conté tres botons selectors d'entrada que contenen les lletres A, B i C. Feu clic al botó selector d'entrada per a inserir (o eliminar si ja està inserit) les línies des de la respectiva font. Per a triar les línies des de diverses entrades, feu clic als botons respectius en l'ordre necessari. Per exemple, si voleu que les línies de B apareguin a la sortida abans que les línies d'A, primer feu clic a B i després a A.

Si utilitzeu el botó Ves automàticament al conflicte no resolt següent després de seleccionar una font (vegeu la secció Avanç automàtic), haureu d'inhabilitar això abans d'escollir línies des de diverses entrades o si voleu editar les línies després de la vostra elecció. Altrament, el &kdiff3; saltarà al següent conflicte després de triar la primera entrada.

Sovint és útil editar directament la sortida de la fusió. La columna del resum mostrarà «m» per a cada línia que s'ha modificat manualment. Quan, per exemple, les diferències estiguin alineades de manera que simplement triar les entrades no serà satisfactori, podreu marcar el text necessari i utilitzar copia i enganxa normalment per a col·locar-ho a la sortida de la fusió.

De vegades, quan s'elimina una línia, sigui per fusió automàtica o per edició, i no queden altres línies en aquest grup, llavors apareixerà el text «<La línia no és codi>» en aquesta línia. Només es tracta d'un marcador de posició per al grup per a quan pugueu canviar d'opinió i seleccionar de nou alguna font. Aquest text no apareixerà al fitxer desat ni en cap selecció que vulgueu copiar i enganxar.

El text «<Conflicte de fusió>» apareixerà en el porta-retalls si copieu i enganxeu algun text que contingui aquesta línia. Però, així i tot, aneu amb compte en fer-ho.

#### Triar l'entrada A, B o C per a tots els conflictes

La fusió normal començarà resolent automàticament els conflictes senzills. Però el menú Fusiona proporciona algunes accions per a altres necessitats habituals. Si heu de seleccionar la mateixa font per a la majoria dels conflictes, podreu triar A, B o C a tot arreu, o només per als conflictes restants sense resoldre, o per als conflictes d'espais en blanc sense resoldre. Si voleu decidir cada diferència d'espai, podreu fer Estableix les diferències d'espais com a conflictes. O si voleu tornar a les opcions automàtiques del &kdiff3;, seleccioneu Resol automàticament els conflictes senzills. Després, el &kdiff3; tornarà a iniciar la fusió. Per a accions que canviïn les vostres modificacions anteriors, el &kdiff3; demanarà la vostra confirmació abans de continuar.

En triar una font per als conflictes dels espais en blanc sense resoldre i s'emprin les opcions Ignora els números (tracta'ls com a espais en blanc) o Ignora els comentaris de C/C++ (tracta'ls com a espais en blanc) a l'element Diff en el diàleg de configuració són emprades de manera que els canvis en els números o comentaris també es tractaran com a espais en blanc.

#### Fusió automàtica de les paraules clau i l'historial en el control de versions (registre)

Molts sistemes per al control de versions admeten paraules clau especials al fitxer. (P. ex., «`$Date$`», «`$Header$`», «`$Author$`», «`$Log$`», &etc;) Durant el registre, el sistema per al control de versions (VCS) canvia aquestes línies. Per exemple, «`$Date$`» es convertirà en «`$Date: 2005/03/22 18:45:01 $`». Atès que aquesta línia serà diferent en cada versió del fitxer, requerirà la interacció manual durant la fusió.

El &kdiff3; ofereix la fusió automàtica per a aquests elements a l'element Fusiona en el diàleg de configuració. Per a les línies senzilles que coincideixen amb l'opció Fusiona automàticament amb l'expressió regular en tots els fitxers d'entrada, el &kdiff3; triarà la línia des de B o, si està disponible, des de C. (A més, cal que les línies en qüestió s'alineïn en la comparació i la línia anterior no contingui cap conflicte). Aquesta fusió automàtica pot executar-se immediatament després que comenci una fusió (activeu l'opció Executa la fusió automàtica amb l'expressió regular a l'inici de la fusió) o més tard mitjançant l'element de menú Fusiona Executa la fusió automàtica amb l'expressió regular.

També s'admet la fusió automàtica per a l'historial del control de versions (també anomenat «registre»). La fusió automàtica de l'historial pot executar-se immediatament quan comença la fusió activant l'opció Fusiona l'historial del control de versions quan es comenci a fusionar a l'element Fusiona en el diàleg de configuració o més tard mitjançant l'element de menú Fusiona Resol automàticament els conflictes cronològics.

En general, l'historial del control de versions comença amb una línia que conté la paraula clau «`$Log$`». Aquesta haurà de coincidir amb l'opció Expressió regular per a l'inici de l'historial: a l'element Fusiona en el diàleg de configuració. El &kdiff3; detectarà quines línies posteriors hi ha a l'historial mitjançant l'anàlisi dels caràcters principals que precedeixen a la paraula clau «`$Log$`». Si també apareixen els mateixos caràcters de «comentari principal» en les següents línies, també s'inclouran a l'historial.

Durant cada registre, el VCS escriu una línia única que especifica la informació de la versió, data i hora seguida de les línies amb els comentaris de l'usuari. Aquestes línies formen una entrada a l'historial. Aquesta secció de l'historial creixerà amb cada registre i les entrades més recents apareixeran a la part superior (després de la línia d'inici de l'historial).

Quan per al desenvolupament en paral·lel dos o més desenvolupadors registrin en una branca del fitxer, l'historial de fusió contindrà diverses entrades que apareixeran com a conflictes durant la fusió de les branques. Atès que fusionar-les pot tornar-se molt tediós, el &kdiff3; ofereix suport amb dues estratègies possibles: simplement inserir a la part superior la informació de l'historial d'ambdós col·laboradors o ordenar la informació de l'historial amb una clau definida per l'usuari.

El mètode de simplement inserir totes les entrades és més fàcil de configurar. El &kdiff3; només necessita un mètode per a detectar quines línies pertanyen a una entrada de l'historial. La majoria dels VCS insereixen una línia buida després de cada entrada de l'historial. Si no hi ha altres línies buides, aquest és un criteri suficient per al &kdiff3;. Simplement establiu una Expressió regular per a l'inici d'entrada de l'historial buida a l'element Fusiona en el diàleg de configuració. Si el criteri de línia buida no és suficient, podreu especificar una expressió regular per a detectar el començament de l'entrada de l'historial.

Cal tenir present que el &kdiff3; eliminarà les entrades duplicades de l'historial. Si una entrada de l'historial aparèixer diverses vegades en l'historial d'un fitxer d'entrada, només quedarà una entrada a la sortida.

Si voleu ordenar l'historial, haureu d'especificar com s'haurà de construir la clau d'ordenació. Utilitzeu parèntesis a l'Expressió regular per a l'inici d'entrada de l'historial a l'element Fusiona en el diàleg de configuració per a agrupar parts de l'expressió regular que després s'utilitzaran per a la clau d'ordenació. Després, especifiqueu el Criteri d'ordenació de les claus per a l'inici de l'entrada de l'historial, especificant una llista separada per comes «,» dels números que es refereixen a la posició del grup en l'expressió regular.

A causa que això no és tan fàcil de fer immediatament, podreu provar i millorar les expressions regulars i la generació de les claus en un diàleg dedicat prement el botó Comprova les expressions regulars.

Exemple: suposem un historial similar a aquest:

    /**************************************************************************
    ** HISTORY:    $Log: \toms_merge_main_view\MyApplication\src\complexalgorithm.cpp $
    **
    **     \main\integration_branch_12   2 Apr 2001 10:45:41   tom
    **  Merged branch simon_branch_15.
    **
    **     \main\henry_bugfix_branch_7\1   30 Mar 2001 19:22:05   henry
    **  Improved the speed for subroutine convertToMesh().
    **  Fixed crash.
    **************************************************************************/

La línia d'inici de l'historial coincideix amb l'expressió regular «`.*\$Log.*\$.*`». Després segueixen les entrades de l'historial.

La línia amb la paraula clau «`$Log$`» comença amb dos «*», després dels quals segueix un espai. El &kdiff3; utilitzarà la primera cadena que no sigui un espai en blanc com a «comentari principal» i suposarà que l'historial acaba en la primera línia sense aquest comentari principal. En aquest exemple, l'última línia acaba amb una cadena que també comença amb dos «*», però en lloc d'un caràcter d'espai més segueix «*». Per tant, aquesta línia acaba l'historial.

Si no es requereix l'ordenació de l'historial, l'expressió regular de la línia d'inici per a l'entrada de l'historial podria tenir aquest aspecte. (Aquesta línia es divideix en dos perquè d'una altra manera no hi cabria).

    \s*\\main\\\S+\s+[0-9]+ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
     [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s+.*

Per a obtenir detalls sobre les expressions regulars, consulteu la documentació sobre expressions regulars. Recordeu que «`\s`» (amb «`s`» en minúscula) coincidirà amb qualsevol espai en blanc i «`\S`» (amb «`S`» en majúscula) coincidirà amb qualsevol espai que no sigui en blanc. En el nostre exemple, l'inici de l'entrada de l'historial conté primer la informació de la versió amb l'expressió regular «`\\main\\\S+`», la data que consisteix en el dia «`[0-9]+`», el mes «`(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`» i l'any «`[0-9][0-9][0-9][0-9]`», l'hora «`[0-9][0-9]:[0-9][0-9]:[0-9][0-9]`» i finalment el nom d'inici de la sessió dels desenvolupadors «`.*`».

Recordeu que els caràcters en el «comentari principal» (a l'exemple «`**`») ja seran eliminats pel &kdiff3; abans d'intentar fer coincidir, per tant, l'expressió regular començarà amb una coincidència per a cap o més caràcters d'espai en blanc «`\s*`». A causa que els caràcters de comentari poden diferir en cada fitxer (&pex;, a C/C++ s'utilitzen altres caràcters de comentari que en un script en Perl) el &kdiff3; s'ocuparà dels caràcters de comentari principals i no haureu d'especificar-los a l'expressió regular.

Si necessiteu un historial ordenat. Llavors s'haurà de calcular la clau d'ordenació. Per això, les parts rellevants de l'expressió regular s'hauran d'agrupar entre parèntesis. (Els parèntesis addicionals també poden romandre si l'ordenació de l'historial està inhabilitada).

    \s*\\main\\(\S+)\s+([0-9]+) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
     ([0-9][0-9][0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])\s+(.*)

Els parèntesis ara contenen `1`. informació de la versió, `2`. dia, `3`. mes, `4`. any, `5`. hora i `6`. nom. Però si volem ordenar per data i hora, ens caldrà construir una clau amb els elements en un ordre diferent d'aparició: Primer l'any, seguit del mes, dia, hora, informació de la versió i nom. Per tant, l'ordre d'ordenació a especificar serà «`4,3,2,5,1,6`».

A causa que els noms dels mesos no són bons per a l'ordenació («`Abr`» seria el primer) el &kdiff3; detectarà en quin ordre s'han donat els noms dels mesos i utilitzarà aquest nombre en el seu lloc («`Abr`» -> «`04`»). I si es troba un nombre pur, es transformarà en un valor de 4 dígits amb zeros a l'esquerra per a l'ordenació. Finalment, la clau d'ordenació resultant per a la primera línia d'inici de l'entrada de l'historial serà:

    2001 04 0002 10:45:41 integration_branch_12   tom

Per a més informació, vegeu la secció Configuració de la fusió.

### Navegar i editar

Es realitza molta navegació amb les barres de desplaçament i el ratolí, però també es pot navegar amb les tecles. Si feu clic a qualsevol de les finestres, podreu utilitzar les dreceres &Left;, &Right;, &Up;, &Down;, &PgUp;, &PgDn;, &Home;, &End;, &Ctrl;&Home; i &Ctrl;&End; com ho faríeu en altres programes. La columna de la visió de conjunt que hi ha al costat de la barra de desplaçament vertical dels fitxers d'entrada també es pot utilitzar per a navegar fent-hi clic.

També podreu utilitzar la roda del ratolí per a desplaçar-vos cap amunt i cap avall.

A l'editor de la sortida de la fusió també podreu utilitzar les altres tecles per a editar. Podeu alternar entre el mode d'inserció i sobreescriptura amb la tecla &Ins;. (De manera predeterminada és el mode inserció).

Un clic amb el &BER; dins de qualsevol columna del resum, se sincronitzaran totes les finestres per a mostrar el començament del mateix grup de línies (com s'explica a la secció Establir el grup actual, sincronitzar la fusió i la posició de la vista de les diferències).

La barra de botons també conté nou botons de navegació amb els quals podreu saltar a la diferència actual/primera/última, a la diferència següent/anterior (&Ctrl;&Down;/&Ctrl;&Up;), al conflicte anterior/següent (&Ctrl;&PgDn;/&Ctrl;&PgUp;), o al conflicte sense resoldre anterior/següent. Recordeu que per al &kdiff3; un «conflicte» que no s'ha resolt automàticament a l'inici de la fusió seguirà sent un «conflicte» fins i tot si es resol. D'aquí la necessitat de distingir els «conflictes no resolts».

#### Avanç automàtic

També hi ha un botó Ves automàticament al conflicte no resolt següent després de seleccionar una font (avanç automàtic). Si l'habiliteu, llavors, quan se selecciona una font, el &kdiff3; saltarà i seleccionarà el següent conflicte no resolt automàticament. Això ajudarà sempre que vulgueu triar una única font. Quan necessiteu les dues fonts, o vulgueu editar després de seleccionar, llavors probablement ho voldreu desactivar. Abans de continuar amb el següent conflicte no resolt, el &kdiff3; mostrarà l'efecte de la vostra elecció durant un curt temps. Aquest retard es pot ajustar a l'element Fusiona en el diàleg de configuració: podeu especificar el Retard de l'avanç automàtic (ms): en mil·lisegons entre 0 i 2000. Consell: Cansat de molts clics? Utilitzeu un petit retard i les dreceres &Ctrl;1/2/3 per a seleccionar A/B/C per a molts conflictes.

### Seleccionar, copiar i enganxar

Les finestres d'entrada no mostren un cursor, de manera que les seleccions s'han de fer amb el ratolí; fent clic amb el &BER; a l'inici, mantenint premut el botó del ratolí i movent-se fins al final, on el deixareu anar de nou. També podeu seleccionar una paraula fent-hi doble clic. A l'editor de sortida de la fusió també podreu seleccionar mitjançant el teclat mantenint premuda la tecla &Maj; i navegant amb les tecles de cursor.

Si la selecció excedeix l'interval visible, podreu moure el ratolí sobre les vores de la finestra, el qual farà que el &kdiff3; es desplaci en aquesta direcció.

Per a seleccions molt grans també podreu utilitzar les tecles de navegació mentre manteniu premut el ratolí. Per exemple, empreu &PgUp; i &PgDn; per a anar ràpidament a una determinada posició. A la posició final deixeu anar el botó del ratolí.

Per a seleccionar tot el que hi ha a la finestra actual, utilitzeu l'element de menú Edita Selecciona-ho tot (&Ctrl;A).

Per a copiar al porta-retalls, haureu de prémer el botó Copia (&Ctrl;C o &Ctrl;&Ins;). Però hi ha una opció Copia la selecció automàticament a l'element Editor en el diàleg de configuració. Si està habilitada, el que seleccioneu es copiarà immediatament i no caldrà copiar explícitament. Però aneu amb compte en emprar-ho, perquè el contingut del porta-retalls podria destruir-se de manera accidental.

Retalla (&Ctrl;X o &Maj;∇) copia al porta-retalls i suprimeix el text seleccionat.

Enganxa (&Ctrl;V o &Maj;&Ins;) insereix el text en el porta-retalls a la posició del cursor o sobre la selecció actual. Si enganxeu a qualsevol de les finestres d'entrada de diferències, el contingut del porta-retalls es mostrarà en aquesta finestra i la comparació es reiniciarà immediatament. Això és útil per a obtenir ràpidament un fragment de text d'algun lloc i comparar-lo amb una altra cosa sense crear primer els fitxers.

### Desar

El desament només es permetrà quan es resolguin tots els conflictes. Si el fitxer ja existeix i l'opció Fitxers per a còpia de seguretat està habilitada a l'element Carpeta en el diàleg de configuració, el fitxer existent serà reanomenat amb una extensió `.orig`, però si aquest fitxer existeix, se suprimirà. Quan sortiu o comenceu una altra anàlisi de diferències i les dades encara no s'hagin desat, el &kdiff3; demanarà si les voleu desar, cancel·lar o continuar sense desar. (El &kdiff3; no capta cap senyal. Per tant, si «mateu» una instància del &kdiff3;, es perdran les vostres dades).

Els finals de línia es desen d'acord amb el mètode normal en el sistema operatiu subjacent. Per als Unices, cada línia acaba amb un caràcter de salt de línia «`\n`», mentre que per als sistemes basats en Win32 cada línia acaba amb un retorn de carro + un salt de línia «`\r\n`». El &kdiff3; no conservarà els finals de línia dels fitxers d'entrada, el qual també voldrà dir que no heu d'emprar el &kdiff3; amb els fitxers binaris.

### Cercar les cadenes

Podeu cercar una cadena en qualsevol finestra de text del &kdiff3;. L'element de menú Edita Cerca... (&Ctrl;F) obre un diàleg que permetrà especificar la cadena a cercar. També podreu seleccionar les finestres on s'ha de cercar. Sempre es començarà a cercar per la part superior. Utilitzeu l'element de menú Edita Cerca la següent... (F3) per a passar a la següent ocurrència. Si seleccioneu cercar a diverses finestres, se cercarà des de la primera finestra de dalt a baix abans que es comenci la cerca de nou a la següent finestra a la part superior, &etc;

### Imprimir

El &kdiff3; admet la impressió de diferències en fitxers de text. L'element de menú Fitxer Imprimeix... (&Ctrl;P) obre un diàleg que permetrà seleccionar la impressora i ajustar altres opcions.

Hi ha diverses possibilitats per a ajustar l'interval. A causa dels diferents diàlegs d'impressió en els diferents sistemes operatius, varia el mètode per a aconseguir certes seleccions de l'interval.

Tot:

- Ho imprimeix tot.

Actual:

- Imprimeix una pàgina que comença en la primera línia visible de la finestra. (En els sistemes sense aquesta opció, això es pot aconseguir especificant el número de pàgina 10.000 per a imprimir).

Selecció:

- Abans de triar imprimir, seleccioneu el text amb el ratolí (com per a copiar i enganxar) en una de les finestres d'entrada de diferències per a definir l'inici i final de la línia. Si no s'ha seleccionat cap text en una de les finestres d'entrada de diferències, llavors aquesta no serà una opció disponible. (En els sistemes sense aquesta opció, això es pot aconseguir especificant el número de pàgina 9.999 per a imprimir).

Interval:

- Especifica la primera i la darrera pàgina.

Altres opcions importants per a imprimir es prenen de les opcions normals:

- Lletra i mida

- Mostra els números de les línies

- Ajust de les paraules

- Colors

- &etc;

El format apaïsat també es recomana per a la impressió.

### Opcions

Les opcions i la llista de fitxers recents es desaran quan sortiu del programa i es tornaran a carregar quan l'inicieu. (Element de menú Arranjament Configura el &kdiff3;...).

#### Lletra

Seleccioneu una lletra d'amplada fixa. (En alguns sistemes, aquest diàleg també presentarà lletres d'amplada variable, però no les hauríeu d'emprar).

#### Colors

Vistes de l'editor i les diferències:

- Color de primer pla:

- En general negre.

Color de fons:

- En general blanc.

Color de fons de les diferències:

- En general gris clar.

Color A:

- En general blau fosc.

Color B:

- En general verd fosc.

Color C:

- En general magenta fosc.

Color del conflicte:

- En general vermell.

Color de fons de l'interval actual:

- En general groc clar.

Color de fons de les diferències de l'interval actual:

- En general groc fosc.

Color per als intervals de diferències alineades manualment:

- En general taronja.

Vista en la comparació de carpetes:

- Color del fitxer més nou:

- En general verd.

Color del fitxer més antic:

- En general vermell.

Color del fitxer d'edat intermèdia:

- En general groc fosc.

Color dels fitxers no disponibles:

- En general negre.

Canviar els colors per a la comparació de carpetes serà efectiu només quan inicieu la propera comparació de carpetes.

En els sistemes amb només 16 o 256 colors, alguns colors no estaran disponibles en forma pura. En aquests sistemes, el botó Omissió triarà un color pur.

#### Arranjament de l'editor

El tabulador insereix espais

- Si està inhabilitada i premeu la tecla , s'inserirà un caràcter de tabulació. En cas contrari, s'inseriran la quantitat adequada de caràcters.

Mida de la tabulació:

- Es pot ajustar a les vostres necessitats específiques. El valor predeterminat és `8`.

Sagnat automàtic

- Quan es prem &Intro; o Entra, s'utilitzarà el sagnat de la línia anterior per a la línia nova.

Copia la selecció automàticament

- Cada selecció es copiarà immediatament al porta-retalls quan està activa i no necessitareu copiar explícitament.

Estil del salt de línia:

- Quan deseu, podreu seleccionar l'estil del final de línia que preferiu. L'opció predeterminada és l'opció comuna per al sistema operatiu emprat.

#### Arranjament del «diff»

Quan es comparen fitxers, el &kdiff3; primer intentarà fer coincidir les línies que són iguals en tots els fitxers d'entrada. Només durant aquest pas podreu ignorar els espais en blanc. El segon pas compararà cada línia. En aquest pas no s'ignoraran els espais en blanc. A més, durant la fusió, no s'ignoraran els espais en blanc.

Ignora els números (tracta'ls com a espais en blanc)

- El valor predeterminat és desactivat. Els caràcters numèrics («0»-«9», «.», «-») s'ignoraran en la primera part de l'anàlisi en la qual es realitza la coincidència de les línies. No obstant això, en el resultat es mostraran les diferències, però es tractaran com a espais en blanc.

Ignora els comentaris de C/C++ (tracta'ls com a espais en blanc)

- El valor predeterminat és desactivat. Els canvis en els comentaris es tractaran com a canvis en els espais en blanc.

Ignora les majúscules/minúscules (tracta-les com a espais en blanc)

- El valor predeterminat és desactivat. Les diferències entre majúscules i minúscules dels caràcters (com «A» front «a») es tractaran com a canvis en els espais en blanc.

Ordre del preprocessador:

- Vegeu la següent secció.

Ordre del preprocessador de coincidència de les línies:

- Vegeu la següent secció.

Esforça't (més lent)

- Intenta trobar una diferència d'espai encara més petita. (El valor predeterminat és activada). Això probablement serà efectiu per a fitxers complicats i grans. I lent per a fitxers molt grans.

Alinea B i C per a 3 fitxers d'entrada

- Intenta alinear B i C quan es comparin o fusionin tres fitxers d'entrada. No recomanat per a fusionar, ja que pot ser més complicat. (De manera predeterminada està desactivat).

#### Arranjament de la fusió

Retard de l'avanç automàtic (ms):

- Quan està en el mode d'avanç automàtic, aquesta opció especificarà quant de temps mostrar el resultat de la selecció abans de saltar al següent conflicte sense resoldre.

Mostra els diàlegs informatius

- Mostra un diàleg amb informació sobre el nombre de conflictes.

Opció predeterminada dels espais en blanc en la fusió de 2/3 fitxers:

- Resoldrà automàticament tots els conflictes en els espais en blanc triant el fitxer especificat. (El valor predeterminat és elecció manual). Útil si els espais en blanc en realitat no són importants en molts fitxers. Si ho necessiteu ocasionalment, millor utilitzeu Escull A/B/C a tots els conflictes dels espais en blanc no resolts al menú Fusiona. Recordeu que si s'habilita Ignora els números (tracta'ls com a espais en blanc) o Ignora els comentaris de C/C++ (tracta'ls com a espais en blanc), aquesta opció automàtica també s'aplicarà als conflictes en els nombres o comentaris.

Fusiona automàticament amb l'expressió regular:

- Expressió regular per a les línies on el &kdiff3; haurà de triar automàticament una font. Vegeu també Fusió automàtica....

Executa la fusió automàtica amb l'expressió regular a l'inici de la fusió

- Si està activada, el &kdiff3; executarà la fusió automàtica utilitzant l'opció Fusiona automàticament amb l'expressió regular quan s'inicia una fusió.

Expressió regular per a l'inici d'entrada de l'historial:

- Expressió regular per a l'inici de les entrades de l'historial de fusió. Normalment aquesta línia conté la paraula clau «`$Log$`». Valor predeterminat «`.*\$Log.*\$.`»

Expressió regular per a l'inici d'entrada de l'historial:

- Una entrada de l'historial per al control de versions consisteix en diverses línies. Especifiqueu l'expressió regular per a detectar la primera línia (sense el comentari inicial). Empreu els parèntesis per a agrupar les claus que vulgueu utilitzar per a ordenar-les. Si es deixa en blanc, llavors el &kdiff3; assumirà que les línies en blanc separen les entrades de l'historial. Per a més detalls, vegeu també la Fusió automàtica....

Ordena la fusió de l'historial

- Habilita l'ordenació de l'historial en el control de versions.

Criteri d'ordenació de les claus per a l'inici de l'entrada de l'historial:

- Cada parell de parèntesis emprats a l'expressió regular per a l'inici de l'entrada de l'historial agruparà una clau que es pot emprar per a ordenar. Especifiqueu la llista de claus (que estan numerades en ordre d'ocurrència començant per `1`) utilitzant «,» com a separador (&pex;, «`4,5,6,1,2,3,7`»). Si es deixa en blanc, no s'ordenarà. Per a més detalls, vegeu també la Fusió automàtica....

Fusiona l'historial del control de versions quan es comenci a fusionar

- Si està activada, el &kdiff3; executarà la fusió automàtica de l'historial utilitzant les opcions abans esmentades quan s'inicia una fusió.

Nombre màxim d'entrades de l'historial:

- El &kdiff3; truncarà la llista de l'historial després del nombre especificat d'entrades. Utilitzeu `-1` per a evitar el truncament. (De manera predeterminada és `-1`).

Comprova les expressions regulars

- Aquest botó mostra un diàleg que permet millorar i provar les expressions regulars anteriors. Simplement copieu les dades respectives dels vostres fitxers a les línies d'exemple. L'opció Resultat coincident: mostrarà immediatament si coincideixen. L'opció Resultat de la clau d'ordenació: mostrarà la clau utilitzada per a l'ordenació en la fusió de l'historial.

Ordre de fusió irrellevant:

- Especifiqueu una ordre que s'haurà de cridar quan el &kdiff3; detecti que per a una fusió de tres fitxers, el fitxer B no aporta cap dada rellevant que no es trobi en el contingut del fitxer C. L'ordre es cridarà amb els tres noms de fitxer com a paràmetres. Les dades que coincideixin amb Fusiona automàticament amb l'expressió regular o en l'historial no es consideraran rellevants.

En les fusions sense conflictes desa i surt automàticament

- Si el &kdiff3; s'inicia des de la línia d'ordres per a fusionar fitxers i tots els conflictes es poden resoldre sense la interacció de l'usuari, desa i surt. (Similar a l'opció de la línia d'ordres `--auto`).

#### Fusionar les carpetes

Aquestes opcions estan relacionades amb l'exploració de les carpetes i el maneig de la fusió: Per als detalls, vegeu Comparar/Fusionar carpetes.

No obstant això, aquí hi ha una opció que també és rellevant per al desament de fitxers individuals:

Fitxers de còpia de seguretat (.orig)

- Quan es desa un fitxer i ja hi ha una versió anterior, la versió original canviarà de nom amb l'extensió `.orig`. Si ja existeix un fitxer de còpia de seguretat antic amb l'extensió `.orig`, se suprimirà sense fer còpia de seguretat.

#### Opcions regional i d'idioma

Usa la mateixa codificació a tot arreu

- Les següents opcions de codificació es poden ajustar per separat per a cada element o si aquesta opció és certa, tots els valors prendran el primer valor.

Nota: la codificació local és «...»

- A sobre dels selectors del còdec apareixerà aquesta nota indicant quina és la codificació local. (Això no és ajustable, però per a la vostra informació en el cas que no la conegueu, però necessiteu seleccionar-la).

Detecta automàticament

- Aquesta opció intenta utilitzar el BOM o les metadades dels documents XML/HTML per a detectar la codificació. En cas contrari comprovarà si es pot interpretar com UTF-8 una mostra petita des del principi del fitxer. Si aquesta comprovació passa s'utilitzarà UTF-8. En cas contrari tornarà al còdec seleccionat per l'usuari. Només s'admet UTF-8 sense BOM ni metadades presents.

Codificació per al fitxer A/B/C:

- Ajusta la codificació del fitxer per als fitxers d'entrada. Això té un efecte sobre com s'interpretaran els caràcters especials. Podreu ajustar cada còdec per separat, fins i tot podreu comparar i fusionar fitxers que s'han desat amb còdecs diferents.

Codificació dels fitxers de sortida en la fusió i desament:

- Quan hàgiu editat un fitxer, podreu ajustar quina codificació es farà servir en fer el desament al disc.

Codificació dels fitxers del preprocessador:

- Quan definiu els preprocessadors, és possible que no puguin operar amb el vostre còdec. (&pex;: els fitxers tenen unicode de 16 bits i el preprocessador només pot prendre &ASCII; de 8 bits). Amb aquesta opció podreu definir la codificació per a la sortida del preprocessador.

Idioma de dreta a esquerra:

- Alguns idiomes s'escriuen de dreta a esquerra. Quan aquesta opció està habilitada, el &kdiff3; dibuixarà el text de dreta a esquerra en les finestres d'entrada de les diferències i en la finestra de sortida de la fusió. Recordeu que si inicieu el &kdiff3; amb l'opció de línia d'ordres `--reverse`, llavors tota la disposició també es mostrarà de dreta a esquerra. (Aquesta és una característica proporcionada per les &Qt;).

  Aquesta documentació es va escriure assumint que aquesta opció o la disposició inversa estan inhabilitades. Per tant, algunes referències a «esquerra» o «dreta» s'hauran de substituir per les seves respectives contraparts si empreu aquestes opcions.

#### Miscel·lània

(Aquestes opcions i accions estan disponibles en els menús o a la barra de botons).

Opcions de la visió de conjunt:

- Aquestes opcions només estaran disponibles quan es comparin tres fitxers. En el mode normal, totes les diferències es mostraran en una columna de la visió de conjunt codificada per colors. Però de vegades és especialment interessant en les diferències entre només dos d'aquests tres fitxers. En seleccionar «A front B», «A front C» o «B front C», es mostrarà una segona columna de la visió de conjunt amb la informació requerida al costat de la visió de conjunt normal.

Ajusta les línies a les finestres de diferències

- Ajusta les línies quan la seva longitud excedeix l'amplada d'una finestra.

Mostra la finestra A/B/C:

- De vegades es vol utilitzar millor l'espai a la pantalla per a les línies llargues. Oculta les finestres que no són importants. (Al menú Finestra).

Commuta l'orientació de les divisions

- Canvia entre les finestres de diferències que es mostren una al costat de l'altra (A a l'esquerra de B, i B a l'esquerra de C) o una damunt de l'altra (A a sobre de B, i B a sobre de C). Això també hauria d'ajudar per a línies llargues. (Al menú Finestres).

Fusiona el fitxer actual

- De vegades esteu veient les diferències d'espais i decidiu fusionar. Un sol clic inicia la fusió i utilitza el nom del fitxer de l'últim fitxer d'entrada com el nom predeterminat del fitxer de sortida. (Quan s'utilitza per a tornar a iniciar una fusió, es mantindrà el nom del fitxer de sortida).

Mostra els espais en blanc

- Desactiveu-la per a suprimir qualsevol ressaltat dels canvis només dels espais en blanc en el text o en les columnes de la visió de conjunt. (Cal tenir en compte que això també s'aplicarà als canvis en els números o comentaris si estan actives les opcions Ignora els números (tracta'ls com a espais en blanc) o Ignora els comentaris de C/C++ (tracta'ls com a espais en blanc)).

Mostra els caràcters d'espai en blanc i els de tabulació

- De vegades, els espais visibles i les tabulacions molesten. Ho podeu desactivar.

Mostra els números de les línies

- Podeu seleccionar si s'han de mostrar els números de línia per als fitxers d'entrada.

#### Configurar les dreceres del teclat

Actualment, només la versió dels &frameworks; admet dreceres de teclat configurables per l'usuari. (Menú Arranjament Configura les dreceres...).

### Ordres del preprocessador

El &kdiff3; admet dues opcions del preprocessador.

Ordre del preprocessador:

- Quan es llegeix qualsevol fitxer, es canalitzarà a través d'aquesta ordre externa. La sortida d'aquesta ordre serà visible en lloc del fitxer original. Podeu escriure el vostre propi preprocessador que satisfaci les vostres necessitats específiques. Empreu-la per a retallar parts pertorbadores del fitxer, o per a corregir automàticament el sagnat, &etc;

Ordre del preprocessador de coincidència de les línies:

- Quan es llegeix qualsevol fitxer, es canalitzarà a través d'aquesta ordre externa. Si també s'especifica una ordre del preprocessador (vegeu a dalt), llavors la sortida del preprocessador serà l'entrada del preprocessador de coincidència de les línies. La sortida només s'utilitzarà en l'anàlisi durant la fase de coincidència de les línies. Podeu escriure el vostre propi preprocessador que satisfaci les vostres necessitats específiques. Cada línia d'entrada haurà de tenir una línia de sortida corresponent.

La idea és permetre a l'usuari una major flexibilitat mentre configura el resultat de les diferències. Però això requereix un programa extern, i molts usuaris no volen escriure'n un ells mateixos. La bona notícia és que molt sovint `sed` o `perl` faran la feina.

Exemple: un cas senzill de prova: es considera el fitxer a.txt (6 línies):

    aa
          ba
          ca
          da
          ea
          fa

I el fitxer b.txt (3 línies):

    cg
          dg
          eg

Sense un preprocessador, les següents línies es col·locarien una a una al costat de l'altra:

    aa - cg
          ba - dg
          ca - eg
          da
          ea
          fa

Probablement això no serà desitjable perquè la primera lletra conté la informació realment interessant. Per a ajudar a l'algoritme de coincidència a ignorar la segona lletra, podem utilitzar una ordre de preprocessador per a la coincidència de les línies, que substitueixi «g» amb «a»:

    sed 's/g/a/'

Amb aquesta ordre, el resultat de la comparació serà:

    aa
          ba
          ca - cg
          da - dg
          ea - eg
          fa

Internament, l'algoritme de coincidència veu els fitxers després d'executar el preprocessador de coincidència de les línies, però a la pantalla el fitxer no canviarà. (El preprocessador normal també canviarà les dades a la pantalla).

#### Bàsics al `sed`

Aquesta secció només presenta algunes característiques molt bàsiques de `sed`. Per a més informació, vegeu info:/sed o https://www.gnu.org/software/sed/manual/html_mono/sed.html. Trobareu una versió precompilada per a &Windows; a http://unxutils.sourceforge.net. Recordeu que els següents exemples suposen que l'ordre `sed` es troba en alguna carpeta a la variable d'entorn `PATH`. Si aquest no és el cas, haureu d'especificar el camí absolut per a l'ordre.

En aquest context, només s'utilitza l'ordre `sed` com a ordre de substitució:

    sed 's/EXPRESSIÓ_REGULAR/SUBSTITUCIÓ/ETIQUETES'

Abans d'utilitzar una ordre nova dins del &kdiff3;, primer haureu de provar-ho a la consola. Aquí l'ordre `echo` és d'utilitat. Exemple:

    echo abrakadabra | sed 's/a/o/'
       -> obrakadabra

Aquest exemple mostra una ordre de `sed` molt senzilla que substitueix la primera ocurrència de «a» amb «o». Si voleu substituir-les totes, llavors necessitareu l'etiqueta «g»:

    echo abrakadabra | sed 's/a/o/g'
       -> obrokodobro

El símbol «|» és l'ordre de canonada que transfereix la sortida de l'ordre anterior a l'entrada de la següent ordre. Si voleu provar amb un fitxer més llarg, podreu utilitzar l'ordre `cat` en els sistemes similars a &UNIX; o `type` en els sistemes similars a &Windows;. L'ordre `sed` farà la substitució de cada línia.

    cat nom_fitxer | sed opcions

#### Exemples per a `sed` emprats al &kdiff3;

##### Ignorar els altres tipus de comentaris

Actualment, el &kdiff3; només comprèn els comentaris a C/C++. Utilitzant l'opció Ordre del preprocessador de coincidència de les línies: també podreu ignorar altres tipus de comentaris, convertint-los en comentaris a C/C++.

Exemple: per a ignorar els comentaris que comencen amb «`#`», us agradarà convertir-los a «`//`». Recordeu que també haureu d'habilitar l'opció Ignora els comentaris de C/C++ (tracta'ls com a espais en blanc) perquè tingui efecte. Una ordre apropiada per a l'Ordre del preprocessador per a la coincidència de les línies: seria:

    sed 's/#/\/\//'

Com que per a `sed`, el caràcter «`/`» té un significat especial, cal col·locar el caràcter «`\`» abans de cada «`/`» a la cadena de substitució. De vegades es requereix «`\`» per a afegir o eliminar un significat especial de certs caràcters. Les cometes simples «'» només són importants quan es prova a l'intèrpret d'ordres, ja que en cas contrari intentarà processar alguns caràcters. El &kdiff3; no fa això excepte per a les seqüències d'escapament «`\"`» i «`\\`».

##### Diferències sense distingir majúscules i minúscules

Utilitzeu la següent Ordre del preprocessador per a la coincidència de les línies: per a convertir tota l'entrada a majúscules:

    sed 's/\(.*\)/\U\1/'

Aquí el «`.*`» és una expressió regular que coincideix amb qualsevol cadena i en aquest context coincideix amb tots els caràcters de la línia. El «`\1`» a la cadena de substitució es refereix al text coincident dins el primer parell de «`\(`» i «`\)`». La «`\U`» converteix el text inserit en majúscules.

##### Ignorar les paraules clau del control de versions

El CVS i altres sistemes per al control de versions utilitzen diverses paraules clau per a inserir cadenes generades automàticament (info:/cvs/Keyword substitution). Tots segueixen el patró «`$PARAULA_CLAU text generat$`». Ara necessitem una ordre del preprocessador per a la coincidència de les línies que només elimini el text generat:

    sed 's/\$\(Revision\|Author\|Log\|Header\|Date\).*\$/\$\1\$/'

Aquí el «`.*`» és una expressió regular que coincideix amb qualsevol cadena i en aquest context coincideix amb tots els caràcters de la línia. El «`\1`» a la cadena de substitució es refereix al text coincident dins el primer parell de «`\(`» i «`\)`». La «`\U`» converteix el text inserit en majúscules.

Mentre experimenteu amb `sed`, podríeu arribar a comprendre fins i tot aquestes expressions regulars. Són útils perquè hi ha molts altres programes que també admeten coses similars.

##### Ignorar els números

Ignorar els números en realitat és una opció integrada. Però com un altre exemple, així és com es veuria com a ordre del preprocessador de coincidència de les línies.

    sed 's/[0123456789.-]//g'

Qualsevol caràcter dins de «`[`» i «`]`» serà una coincidència i serà substituït per res.

##### Ignorar certes columnes

De vegades, un text té un format molt estricte i conté columnes que sempre voleu ignorar, mentre que hi ha altres columnes que voldreu conservar per a la seva anàlisi. En el següent exemple, s'ignoren les primeres cinc columnes (caràcters), es conserven les següents deu columnes, després de nou s'ignoren cinc columnes i es conserva la resta de la línia.

    sed 's/.....\(..........\).....\(.*\)/\1\2/'

Cada punt «`.`» coincidirà amb qualsevol caràcter individual. El «`\1`» i «`\2`» a la cadena de substitució es refereixen al text coincident dins del primer i segon parell de «`\(`» i «`\)`» denotant el text a conservar.

##### Combinar diverses substitucions

De vegades voldreu aplicar diverses substitucions alhora. Després podreu utilitzar el punt i coma «`;`» per a separar les unes de les altres. Exemple:

    echo abrakadabra | sed 's/a/o/g;s/\(.*\)/\U\1/'
       -> OBROKODOBRO

##### Emprar `perl` en comptes de `sed`

En comptes de `sed`, possiblement voldreu utilitzar una mica més com `perl`.

    perl -p -e 's/EXPRESSIÓ_REGULAR/SUBSTITUCIÓ/ETIQUETES

Però alguns detalls són diferents en `perl`. Recordeu que on `sed` necessitava «`\(`» i «`\)`» el `perl` requereix el més simple «`(`» i «`)`» sense precedir «`\`». Exemple:

    sed 's/\(.*\)/\U\1/'
       perl -p -e 's/(.*)/\U\1/'

#### Ordre d'execució del preprocessador

En la següent ordre, les dades es canalitzen a través de tots els preprocessadors interns i externs:

- Prepocessador normal,

- Preprocessador de coincidència de les línies,

- Ignora les majúscules/minúscules (tracta-les com a espais en blanc) (conversió a majúscules),

- Detecció dels comentaris a C/C++,

- Ignora els números (tracta'ls com a espais en blanc),

- Ignora els espais en blanc

Les dades després del preprocessador normal es conservaran per a la seva visualització i fusió. Les altres operacions només modificaran les dades que vegi l'algoritme de coincidència de les línies.

En els rars casos en què utilitzeu un preprocessador normal, cal tenir en compte que el preprocessador de coincidència de les línies veurà la sortida del preprocessador normal com a una entrada.

#### Avís

Les ordres del preprocessador solen ser molt útils, però com amb qualsevol opció que modifiqui els textos o oculti certes diferències automàticament, pot passar per alt certes diferències accidentalment i, en el pitjor dels casos, destruir dades importants.

Per aquesta raó, durant una fusió, si s'empra una ordre del preprocessador normal, el &kdiff3; dirà i us demanarà si s'ha d'inhabilitar o no. Però no us avisarà si està activada una opció Ordre del preprocessador per a la coincidència de les línies:. La fusió no es completarà fins que es resolguin tots els conflictes. Si inhabiliteu l'element de menú Vista de les diferències Mostra els espais en blanc, també seran visibles les diferències que es van eliminar amb l'opció Ordre del preprocessador de coincidència de les línies:. Si el botó Desa roman inhabilitat durant una fusió (a causa que romanen conflictes), podreu habilitar l'element de menú Vista de les diferències Mostra els espais en blanc. Si no voleu fusionar manualment aquestes diferències menys importants, podreu seleccionar l'element de menú Fusiona Escull [A|B|C] a tots els conflictes dels espais en blanc no resolts.

## Comparació i fusió de carpetes amb el &kdiff3;

### Introducció a la comparació i fusió de carpetes

Sovint, els programadors han de modificar molts fitxers en una carpeta per a aconseguir la seva intenció. Per això, el &kdiff3; també permet comparar i fusionar carpetes completes de forma recursiva!

Encara que comparar i fusionar carpetes sembla força obvi, hi ha diversos detalls que haureu de conèixer. Per descomptat, el més important és el fet que ara es podran veure afectats molts fitxers per cada operació. Si no teniu còpies de seguretat de totes les dades originals, podria ser molt difícil o fins i tot impossible tornar a l'estat original. De manera que abans de començar una fusió, assegureu-vos que les vostres dades estan segures i que serà possible tornar a l'estat inicial. Si creeu un arxiu o utilitzeu algun sistema per al control de versions -aquesta és la vostra decisió-, fins i tot els programadors i integradors experimentats necessiten de tant en tant les fonts antigues. I teniu en compte que encara que jo (l'autor del &kdiff3;) intento fer-ho el millor possible, no puc garantir que no hi hagi errors. Segons la GPL de &GNU;, NO HI HA CAP GARANTIA per a aquest programa. Així que sigueu humil i teniu-ho sempre present:

> Errar és humà, però per a arruïnar realment les coses, necessitareu un ordinador.

De manera que això és el que aquest programa pot fer: el &kdiff3;...

- ...llegeix i compara dues o tres carpetes de forma recursiva,

- ...té una cura especial en els enllaços simbòlics,

- ...permet explorar fitxers amb doble clic del ratolí,

- ...per a cada element proposa una operació de fusió, el qual podreu canviar abans d'iniciar la fusió de la carpeta,

- ...permet simular la fusió i llista les accions que tindran lloc, sense fer-les realment,

- ...permet realment fer la fusió, i permet interactuar quan sigui necessària la interacció manual,

- ...permet executar l'operació seleccionada per a tots els elements (tecla F7) o l'element seleccionat (tecla F6),

- ...permet continuar la fusió després de la interacció manual amb la tecla F7,

- ...de manera opcional crea còpies de seguretat, amb l'extensió `.orig`,

- ...

### Començar amb la comparació o fusió de les carpetes

Això és molt similar a la fusió i comparació de fitxers individuals. Només haureu d'especificar les carpetes a la línia d'ordres o en el diàleg per a obrir fitxers.

#### Comparar/Fusionar dues carpetes:

    kdiff3 carpeta_1 carpeta_2
       kdiff3 carpeta_1 carpeta_2 -o carpeta_de_destinació

Si no s'especifica una carpeta de destinació, el &kdiff3; emprarà `carpeta_2`.

#### Comparar/Fusionar l'arbre de carpetes:

    kdiff3 carpeta_1 carpeta_2 carpeta_3
       kdiff3 carpeta_1 carpeta_2 carpeta_3 -o carpeta_de_destinació

Quan es fusionen 3 carpetes, s'utilitza `carpeta_1` com a base per a la fusió. Si no s'especifica cap carpeta de destinació, el &kdiff3; utilitzarà `carpeta_3` com la carpeta de destinació per a la fusió.

Recordeu que només la comparació començarà automàticament, no la fusió. Per això, primer haureu de seleccionar una entrada de menú o la tecla F7. (Més detalls més endavant).

### Informació visible en fusionar carpetes

Mentre es llegeixen les carpetes, apareixerà un quadre de missatge informant sobre el progrés. Si interrompeu l'exploració de la carpeta, només es llistaran els fitxers que s'hagin comparat fins llavors.

Quan es completa l'exploració de la carpeta, el &kdiff3; mostrarà un quadre de llista amb els resultats restants...

...i els detalls sobre l'element actualment seleccionat a la dreta:

#### La columna Nom

Cada fitxer i carpeta que s'ha trobat durant l'exploració es mostrarà aquí en un arbre. Podreu seleccionar un element fent-hi clic amb el ratolí.

Les carpetes estaran plegades de manera predeterminada. Les podreu desplegar i plegar fent clic al signe «+»/«-» o fent doble clic sobre l'element o amb les tecles de cursor &Left;/&Right;. El menú Carpeta també conté dues accions Plega totes les subcarpetes i Desplega totes les subcarpetes amb les quals podreu contraure o expandir totes les carpetes alhora.

Si feu doble clic a un element de fitxer, s'iniciarà la comparació dels fitxers i apareixerà la finestra de diferències.

La imatge a la columna Nom reflectirà el tipus de fitxer en la primera carpeta (A). Pot ser una d'aquestes:

- Fitxer normal

- Carpeta normal (imatge de carpeta)

- Enllaç amb un fitxer (imatge de fitxer amb una fletxa d'enllaç)

- Enllaç amb una carpeta (imatge de carpeta amb una fletxa d'enllaç)

Si el tipus de fitxer és diferent en les altres carpetes, això serà visible en les columnes A/B/C i en la finestra que mostra els detalls sobre l'element seleccionat. Cal tenir en compte que, en aquest cas, no es podrà seleccionar automàticament cap operació de fusió. En iniciar la fusió, l'usuari serà informat dels problemes d'aquest tipus.

#### Les columnes A/B/C i l'esquema de colors

Com es pot veure a la imatge de dalt, els colors vermell, verd, groc i negre s'utilitzen en les columnes A/B/C.

- Negre: aquest element no existeix en aquesta carpeta.

- Verd: element més nou.

- Groc: més antic que el verd, més nou que el vermell.

- Vermell: element més antic.

Però per als elements que eren idèntics en la comparació, el seu color també serà idèntic fins i tot si l'antiguitat no ho és.

Les carpetes es consideraran iguals si tots els elements que contenen són idèntics. Llavors també tindran el mateix color. Però l'antiguitat d'una carpeta no es considerarà pel seu color.

La idea d'aquest esquema de coloració el vaig trobar a `dirdiff`. Els colors s'assemblen als colors d'una fulla que és verda quan és nova, més tard es torna groga i vermella quan és vella.

#### La columna Operació

Després de comparar les carpetes, el &kdiff3; també avaluarà una proposta per a una operació de fusió. Això es mostra a la columna Operació. Podreu modificar l'operació fent clic sobre l'operació que voleu canviar. Apareixerà un petit menú emergent que us permetrà seleccionar una operació per a aquest element. (També podreu seleccionar les operacions més necessàries mitjançant el teclat. &Ctrl;1/2/3/4/∇ seleccionarà A/B/C/Fusiona/Suprimeix respectivament, si està disponible). Aquesta operació s'executarà durant la fusió. Quines operacions hi haurà disponibles, dependrà de l'element i del mode de fusió en què esteu. El mode de fusió serà un de

- Fusionar tres carpetes (A es tracta com la base més antiga d'ambdues).

- Fusionar dues carpetes.

- Mode sincronitza dues carpetes (s'activa mitjançant l'opció Sincronitza les carpetes).

En la fusió de tres carpetes, la proposta d'operació serà: Si per a un element...

- ...les tres carpetes són iguals: copiar des de C

- ...A i C són iguals però B no ho és: copiar des de B (o si B no existeix, suprimir la destinació si existeix)

- ...A i B són iguals però C no ho és: copiar des de C (o si C no existeix, suprimir la destinació si existeix)

- ...B i C són iguals però A no ho és: copiar des de C (o si C no existeix, suprimir la destinació si existeix)

- ...només existeix A: suprimir la destinació (si existeix)

- ...només existeix B: copiar des de B

- ...només existeix C: copiar des de C

- ...A, B i C no són iguals: fusionar

- ...A, B i C no tenen el mateix tipus de fitxer (&pex;, A és una carpeta, B és un fitxer): «Error: Tipus de fitxer en conflicte». Si bé aquests elements existeixen, la fusió de carpetes no pot començar.

En la fusió de dues carpetes, la proposta d'operació serà: Si per a un element...

- ...ambdues carpetes són iguals: copiar des de B

- ...A existeix, però no B: copiar des d'A

- ...B existeix, però no A: copiar des de B

- ...A i B existeixen però no són iguals: fusionar

- ...A i B no tenen el mateix tipus de fitxer (&pex;, A és una carpeta, B és un fitxer): «Error: Tipus de fitxer en conflicte». Si bé aquests elements existeixen, la fusió de carpetes no podrà començar.

El mode de sincronització estarà actiu si només s'han especificat dues carpetes i cap destinació explícita, i si l'opció Sincronitza les carpetes està activa. Després, el &kdiff3; seleccionarà una operació predeterminada perquè les dues carpetes siguin iguals després. Si per a un element...

- ...ambdues carpetes són iguals: no es farà res.

- ...A existeix, però no B: copiar A a B

- ...B existeix, però no A: copiar B a A

- ...A i B existeixen, però no són iguals: fusionar i emmagatzemar el resultat en ambdues carpetes. (Per a l'usuari, el nom visible del fitxer desat és B, però després el &kdiff3; també copiarà B a A).

- ...A i B no tenen el mateix tipus de fitxer (&pex;, A és una carpeta, B és un fitxer): «Error: Tipus de fitxer en conflicte». Si bé aquests elements existeixen, la fusió de carpetes no podrà començar.

Quan es fusionen dues carpetes i se selecciona l'opció Copia el més nou en comptes de fusionar-los, el &kdiff3; examinarà les dates i proposarà triar el fitxer més nou. Si els fitxers no són iguals però tenen dates iguals, llavors l'operació contindrà «Error: les dates són iguals però els fitxers no». Si bé aquests elements existeixen, la fusió de carpetes no podrà començar.

#### La columna Estat

Durant la fusió, es processarà un fitxer rere l'altre. La columna d'estat mostrarà Fet per als elements on l'operació de fusió ha tingut èxit i altres textos si succeeix alguna cosa inesperada. Quan es completa una fusió, haureu de realitzar una última comprovació per a veure si l'estat de tots els elements és acceptable.

#### Columnes d'estadístiques

Quan el mode de comparació de fitxers Anàlisi completa està habilitat en les opcions, el &kdiff3; mostrarà columnes addicionals que contenen el nombre de conflictes no resolts, resolts, no blanc i espai en blanc. (La columna Resolt només es mostrarà en comparar o fusionar tres carpetes).

#### Seleccionar els fitxers llistats

Diverses opcions influeixen en els fitxers que es llisten aquí. Alguns són accessibles en el diàleg de configuració. El menú Carpeta conté les entrades:

- Mostra els fitxers idèntics: els fitxers que s'han detectat com a iguals en totes les carpetes de l'entrada.

- Mostra els fitxers diferents: els fitxers que existeixen a dues o més carpetes però que no són iguals.

- Mostra els fitxers que només són a A: els fitxers que només existeixen a A, però no a B o C.

- Mostra els fitxers que només són a B: els fitxers que només existeixen a B, però no a A o C.

- Mostra els fitxers que només són a C: els fitxers que només existeixen a C, però no a A o B.

Activeu només les opcions Mostra per als elements que voleu llistar. Si, per exemple, només voleu llistar tots els elements que hi ha a A o a B però no en ambdós, haureu d'activar Mostra els fitxers que només són a A i Mostra els fitxers que només són a B i desactivar totes les altres (Mostra els fitxers idèntics, Mostra els fitxers diferents, Mostra els fitxers que només són a C). La llista s'actualitzarà immediatament per a reflectir el canvi.

Aquestes opcions també s'apliquen a les carpetes amb una excepció: inhabilitant Mostra els fitxers diferents no ocultarà cap carpeta sencera. Això només funcionarà per a dins dels fitxers.

Cal tenir en compte que d'aquestes, només l'opció Mostra els fitxers idèntics és persistent. Les altres estaran habilitades en iniciar el &kdiff3;.

### Fer una fusió de la carpeta A

Podreu fusionar l'element seleccionat (fitxer o carpeta) o tots els elements. Quan hàgiu realitzat totes les vostres eleccions d'operació (també en totes les subcarpetes), llavors podreu iniciar la fusió.

Recordeu que si no heu especificat explícitament una carpeta de destinació, llavors la destinació serà C en el mode de tres carpetes, B en el mode de fusió de dues carpetes, i en el mode de sincronització serà A o/i B.

Si heu especificat una carpeta de destinació, comproveu també que tots els elements que haurien d'estar a la sortida estiguin a l'arbre. Hi ha algunes opcions que fan que certs elements siguin omesos en la comparació i fusió de carpetes. Marqueu aquestes opcions per a evitar sorpreses desagradables:

- Carpetes recursives: si està desactivada, no es trobaran els elements a les subcarpetes.

- Patró/Negatiu del patró: inclou/exclou els elements que coincideixen

- Excloure els fitxers ocults

- Les opcions «Mostra» (Mostra els fitxers idèntics/diferents, Mostra els fitxers que només són a A/B/C)

Si canvieu la configuració per a llistar més fitxers, haureu de tornar a escanejar a través de l'element de menú Carpeta Torna a explorar. (La raó d'això és que per a una velocitat de comparació més ràpida, el &kdiff3; ometrà la comparació dels fitxers suprimits seguint aquest criteri). Si heu canviat els vostres patrons de fitxers i carpetes per a excloure fitxers, la llista de fitxers s'actualitzarà immediatament en tancar el diàleg d'opcions.

Recordeu que quan escriviu en una carpeta completament nova, generalment també voldreu copiar els fitxers idèntics. En aquest cas, habiliteu l'opció Mostra els fitxers idèntics. Si la carpeta de destinació és una de les entrades, llavors això no caldrà perquè el fitxer ja hi és.

Si fins ara esteu satisfet, la resta serà fàcil.

Per a fusionar tots els elements: Seleccioneu Comença/Continua la fusió de les carpetes al menú Carpeta o premeu F7 (la qual és la drecera predeterminada). Per a només fusionar l'element actual: seleccioneu Executa l'operació per a l'element actual o premeu F6.

Si a causa de tipus de fitxer en conflicte hi ha alguns elements amb operacions encara no vàlides, apareixerà un quadre de missatge i s'indicaran aquests elements, de manera que pugueu seleccionar una operació vàlida per a l'element.

Si fusioneu tots els elements, apareixerà un diàleg que us donarà les opcions Fes-ho, Simula-ho i Cancel·la.

- Seleccioneu Simula-ho si voleu veure el que es faria sense fer-ho en realitat. Es mostrarà una llista detallada de totes les operacions.

- En cas contrari, seleccioneu Fes-ho per a començar en realitat a fusionar.

Llavors el &kdiff3; executarà l'operació especificada per a tots els elements. Si es requereix interacció manual (fusió d'un sol fitxer), s'obrirà una finestra de fusió (vegeu la captura de pantalla gran).

En acabar de fusionar manualment un fitxer, torneu a seleccionar Comença/Continua la fusió de les carpetes o la tecla F7. Si encara no l'heu desat, un diàleg us demanarà que ho feu. Llavors el &kdiff3; continuarà amb el següent element.

Quan el &kdiff3; troba un error, us ho indicarà i mostrarà la informació detallada sobre l'estat. A la part inferior d'aquesta llista, hi haurà alguns missatges d'error que us ajudaran a comprendre la causa del problema. Quan continueu fusionant (tecla F7), el &kdiff3; us donarà l'opció de tornar a intentar o ometre l'element que ha causat el problema. Això vol dir que abans de continuar podreu triar una altra operació o resoldre el problema per altres mitjans.

Quan es completi la fusió, el &kdiff3; us informarà mitjançant un quadre de missatge.

Si alguns elements s'han fusionat individualment abans d'executar la fusió de carpetes, el &kdiff3; us ho recordarà (mentre continueu amb aquesta sessió de fusió), i no els tornarà a fusionar més tard quan s'executi la fusió de tots els elements. Fins i tot quan s'ha omès la fusió o no s'ha desat res, aquests elements comptaran com a completats. Només quan canvieu l'operació de fusió, l'estat Fet de l'element serà eliminat i podreu fusionar de nou.

### Opcions per a comparar i fusionar carpetes

Les preferències del &kdiff3; (menú Arranjament Configura el &kdiff3;...) té una secció anomenada Fusió de carpetes amb aquestes opcions:

Carpetes recursives

- Seleccioneu si voleu cercar a les carpetes de forma recursiva.

Patró/ons de fitxer:

- Només es col·locaran a l'arbre els fitxers que coincideixin aquí amb qualsevol patró. Podreu especificar més d'un patró utilitzant el punt i coma «;» com a separador. Els comodins vàlids: «*» i «?». (&pex;, «`*.cpp;*.h`»). El valor predeterminat és «*». Aquest patró no s'utilitzarà en les carpetes.

Negatiu del/s patró/ons dels fitxers:

- Els fitxers que coincideixin amb aquest patró s'exclouran de l'arbre. Podreu especificar més d'un patró utilitzant el punt i coma «;» com a separador. Els comodins vàlids: «*» i «?». El valor predeterminat és «`*.orig;*.o;*.obj`».

Negatiu del/s patró/ons de les carpetes:

- Les carpetes que coincideixin amb aquest patró s'exclouran de l'arbre. Podreu especificar més d'un patró utilitzant el punt i coma «;» com a separador. Els comodins vàlids: «*» i «?» El valor predeterminat és «`CVS;deps;.svn`».

Usa el fitxer «Ignore»

- S'ignoraran els fitxers i carpetes que també serien ignorats pel vostre control del codi font. Molts fitxers generats automàticament són ignorants emprar la llista per a ignorar. El gran avantatge és que pot ser una carpeta específica a través d'un fitxer local. (Per a més detalls, vegeu la documentació per al control del codi font).

Cerca als fitxers i carpetes ocults

- En alguns sistemes de fitxers, els fitxers tenen un atribut «Ocult». En altres sistemes, un nom de fitxer que comença amb un punt «.» fa que resti ocult. Aquesta opció permet decidir si voleu incloure o no aquests fitxers en l'arbre. El valor predeterminat és activat.

Segueix els enllaços de fitxer

- Per als enllaços a fitxers: quan està inhabilitada, es compararan els enllaços simbòlics. Quan està habilitada, es compararan els fitxers que hi ha al darrere dels enllaços. El valor predeterminat és desactivat.

Segueix els enllaços de carpeta

- Per als enllaços a carpetes: quan està inhabilitada, es compararan els enllaços simbòlics. Quan està habilitada, l'enllaç es tractarà com una carpeta i s'explorarà de forma recursiva. (Recordeu que el programa no comprovarà si l'enllaç és «recursiu». Llavors, per exemple, una carpeta que conté un enllaç a una carpeta causaria un bucle infinit, i després d'un temps quan la pila es desbordi o s'esgoti tota la memòria, es bloquejarà el programa). El valor predeterminat és desactivat.

La comparació dels noms de fitxer distingeix majúscules i minúscules

- De manera predeterminada és fals al &Windows;, cert per als altres sistemes operatius.

Mode de comparació dels fitxers:

- Comparació binària

- Aquest és el mode de comparació de fitxers predeterminat.

Anàlisi completa

- Fa una anàlisi completa de cada fitxer i mostra les columnes d'informació estadística. (Nombre de conflictes Resolt, No resolt, No blanc i Blanc). L'anàlisi completa és més lenta que una anàlisi binària senzilla, i molt més lenta quan s'utilitza en fitxers que no contenen text. (Especifiqueu el negatiu dels patrons apropiats de fitxer).

Confia en la mida i la data de modificació (insegur)

- Si compareu carpetes grans en una xarxa lenta, podria ser més ràpid comparar només les dates de modificació i la longitud del fitxer. Però aquesta millora en la velocitat ve amb el preu d'una petita incertesa. Utilitzeu aquesta opció amb cura. El valor predeterminat és desactivat.

Confia en la mida (insegur)

- Similar a confiar en la data de modificació. No succeeix una comparació real. Dos fitxers es consideraran iguals si les seves mides de fitxer són iguals. Això és útil quan l'operació de còpia de fitxers no conserva la data de modificació. Utilitzeu aquesta opció amb cura. El valor predeterminat és desactivat.

Sincronitza les carpetes

- Activa el mode de sincronització quan es comparen dues carpetes i no s'ha especificat cap carpeta de destinació explícita. En aquest mode, les operacions proposades s'escolliran de manera que ambdues carpetes font siguin iguals després. A més, el resultat de la fusió s'escriurà en ambdues carpetes. El valor predeterminat és desactivat.

Copia el més nou en comptes de fusionar-los (insegur)

- En lloc de fusionar l'operació proposada, es copiarà la font més nova si han succeït canvis. (Considerat insegur, perquè implica que sabeu que l'altre fitxer no ha estat també editat. Comproveu-ho per a assegurar-vos en tots els casos). El valor predeterminat és desactivat.

Fitxers de còpia de seguretat (.orig)

- Si se substitueix un fitxer o carpeta completa per una altra o se suprimeix, la versió original canviarà de nom amb l'extensió `.orig`. Si ja existeix un fitxer antic de còpia de seguretat amb aquesta extensió, se suprimirà sense còpia de seguretat. Això també afectarà la fusió normal de fitxers individuals, no només en el mode fusió de carpetes. El valor predeterminat és activat.

### Altres funcions a la finestra de fusió de carpetes

#### Mode de pantalla dividida/completa

En general, la vista de llista per a la fusió de carpetes romandrà visible mentre es compara o fusiona un sol fitxer. Amb el ratolí, podreu moure la barra divisòria que separa la llista de fitxers de les finestres de diferències de text. Si no voleu això, podreu inhabilitar l'element de menú Carpeta Vista de pantalla dividida en text i carpetes. Després podreu utilitzar l'element de menú Carpeta Commuta la vista per a canviar entre la llista de fitxers i la vista de diferències de text que després ocuparan la pantalla completa.

#### Comparar o fusionar un sol fitxer

Probablement preferireu un doble clic del ratolí en un fitxer per a comparar-lo. No obstant això, també hi ha una entrada al menú Carpeta. També podreu fusionar directament un sol fitxer seleccionant-lo i triant l'element de menú Fusiona Fusiona el fitxer actual. En desar el resultat, l'estat s'establirà com a fet i el fitxer no es fusionarà de nou si s'inicia una fusió de carpeta.

Fixeu-vos, que aquesta informació d'estat es perdrà quan torneu a executar una exploració de la carpeta: Carpeta Torna a explorar

#### Comparar o fusionar fitxers amb noms diferents

A vegades necessitareu comparar o fusionar fitxers amb noms diferents (&pex;, el fitxer actual i la còpia de seguretat a la mateixa carpeta).

Seleccioneu el fitxer exacte fent clic a la icona a la columna A, B o C. El primer fitxer seleccionat s'haurà de marcar amb una A, el segon i el tercer amb B i C, independentment de la columna en què es trobin. D'aquesta manera només es podran triar fins a tres fitxers.

Continueu triant l'element de menú Carpeta Compara els fitxers seleccionats explícitament o Carpeta Fusiona els fitxers seleccionats explícitament. Per a la vostra comoditat, aquestes entrades de menú també apareixeran com un menú contextual quan feu clic dret en l'últim fitxer seleccionat.

La comparació o fusió d'un fitxer succeirà a la mateixa finestra. Si s'utilitza aquest mètode per a les carpetes, s'obrirà una finestra nova.

## Temes diversos

### Transparència de xarxa a través del KIO

#### Esclaus KIO

La biblioteca KIO dels &frameworks; admet la transparència de xarxa mitjançant els esclaus KIO. El &kdiff3; la farà servir per a llegir els fitxers d'entrada i per a explorar les carpetes. Això vol dir que podreu especificar fitxers i carpetes en recursos locals i remots mitjançant els &URL;.

Exemple:

    kdiff3 test.cpp  ftp://ftp.faraway.org/test.cpp
       kdiff3 tar:/home/hacker/arxiu.tar.gz/carpeta ./carpeta

La primera línia compara un fitxer local amb un fitxer en un servidor &FTP;. La segona línia compara una carpeta dins d'un arxiu comprimit amb una carpeta local.

Altres esclaus KIO que també són interessants:

- Fitxers des del WWW (http:),

- Fitxers des de l'&FTP; (ftp:),

- Transferència de fitxers encriptats (fish:, sftp:),

- Recursos de &Windows; (smb:),

- Fitxers locals (file:),

Altres coses que també són possibles, però probablement menys útils:

- Pàgines «man» (man:),

- Pàgines «info» (info:),

#### Com escriure els &URL;

Un &URL; té una sintaxi diferent en comparació amb els camins dels fitxers i carpetes locals. S'han de considerar algunes coses:

- Un camí pot ser relatiu i pot contenir «.» o «..». Això no és possible per als &URL; que sempre són absoluts.

- Els caràcters especials s'han d'escriure amb «escapament». («`#`» -> «`%23`», espai -> «`%20`», &etc;) Per exemple, un fitxer amb el nom «`/#`foo`#`» tindria l'&URL; «file:/`%23`foo`%23`».

- Quan els &URL; no funcionin com s'espera, primer intenteu obrir-los al &konqueror;.

#### Capacitats dels esclaus KIO

La transparència de xarxa té un inconvenient: no tots els recursos tenen les mateixes capacitats.

De vegades això es deu al sistema de fitxers del servidor, de vegades a causa del protocol. Aquí hi ha una breu llista de les restriccions:

- De vegades no s'admeten els enllaços.

- O no hi ha forma de distingir si un enllaç apunta a un fitxer o carpeta. Sempre assumint un fitxer. (ftp:, sftp:).

- No sempre es pot determinar la mida del fitxer.

- Suport limitat per als permisos.

- No hi ha possibilitat de modificar els permisos o el temps de modificació, de manera que els permisos o el temps d'una còpia diferiran de l'original. (Vegeu l'opció Confia en la mida (insegur)). (Per a modificar els permisos o el temps de modificació només és possible per als fitxers locals).

### Usar el &kdiff3; com a una eina de «diff» i fusió de &git;

Es pot emprar el &kdiff3; com a una eina de «diff» i fusió de &git;.

Simplement afegiu les següents línies al vostre fitxer `gitconfig`.

    [diff]
            tool = kdiff3
    [difftool "kdiff3"]
            path = <camí cap al binari kdiff3 al vostre sistema>
    [difftool]
            prompt = false
            keepBackup = false
            trustExitCode = false
    [merge]
            tool = kdiff3
    [mergetool]
            prompt = false
            keepBackup = false
            keepTemporaries = false
    [mergetool "kdiff3"]
            path = <camí cap al binari kdiff3 al vostre sistema>

Després, per a veure les diferències entre dues comissions, utilitzeu `git difftool `primera_suma` `segona_suma` --tool=kdiff3 --cc `algun_fitxer_a_larbre_de_Git``

Per a fusionar una branca amb el &kdiff3;, utilitzeu `git merge `nom_branca` && git mergetool --tool=kdiff3`

Una vegada resolts els conflictes de fusió de la forma habitual, n'hi haurà prou amb cometre els canvis per a fer la tasca.

## Preguntes i respostes

&reporting.bugs; &updating.documentation;

Per què s'anomena «&kdiff3;»?

Les eines anomenades KDiff i KDiff2 (ara s'anomenen &kompare;) ja existeixen. A més, el &kdiff3; hauria de suggerir que pot fusionar com l'eina `diff3` a la col·lecció «Diff-Tool».

Per què el vaig alliberar sota la GPL?

Estic emprant programes GPL des de fa molt de temps i vaig aprendre molt en donar una ullada a moltes de les fonts. Per tant, aquest és el meu «Gràcies» a tots els programadors que també ho van fer o que faran el mateix.

Manquen alguns botons i funcions. Què passa?

Heu compilat des del codi font però probablement no heu especificat el prefix correcte per a la instal·lació. De manera predeterminada, el `cmake` vol instal·lar a `/usr/local` però després no pot trobar el fitxer de recursos de la interfície d'usuari (&ead;, `kdiff3ui.rc`). El fitxer `README` conté més informació sobre el prefix correcte.

Sovint, les línies que són similars però no idèntiques apareixen una al costat de l'altra, però de vegades no. Per què?

Les línies on només la quantitat de caràcters d'espai en blanc és diferent, es tractaran com a «iguals» al començament, mentre que només un caràcter no blanc diferent farà que les línies siguin «diferents». Si apareixen línies similars una al costat de l'altra, això en realitat és una coincidència, però afortunadament sovint és així. Vegeu també l'ajuda del manual de «diff».

Per què s'han de resoldre tots els conflictes abans que es pugui desar el resultat de la fusió?

Per a cada secció igual o diferent, l'editor a la finestra de resultats de la fusió recordarà on comença o on acaba. Això és necessari perquè els conflictes es puguin resoldre manualment simplement seleccionant el botó de la font (A, B o C). Aquesta informació es perdrà mentre es desa com a text i és massa esforç crear un format de fitxer especial que admeti desar i restaurar tota la informació necessària.

Com puc sincronitzar les vistes de les diferències i la fusió, de manera que totes les vistes mostrin la mateixa posició al text?

Feu clic a la columna del resum a l'esquerra del text. (Vegeu també aquí).

Perquè `git difftool --dir-diff` dona «Barreja d'enllaços i fitxers normals» en emprar el &kdiff3; com a eina de «diff»?

Aquest és un efecte secundari del funcionament intern de git. Si voleu comparar una revisió anterior amb l'arbre de treball actual, el git compararà els fitxers que representen la comissió anterior amb els enllaços simbòlics que apuntin a l'arbre de treball. A partir de la versió 1.9, el &kdiff3; té activat de manera predeterminada Segueix els enllaços de fitxer i Segueix els enllaços de carpeta. Abans d'això, de manera predeterminada estaven desactivades. Això no importava si també estava desactivada «Anàlisi completa». No obstant això, amb Anàlisi completa, el &kdiff3; inicialment intentaria comparar el camí apuntat per un enllaç en lloc de seguir-lo. Abans de la 1.8, s'ignorava l'error resultant. No obstant això, la 1.8 va començar a informar de l'error.

Per què l'editor a la finestra de resultats de la fusió no té l'opció «Desfés»?

Això seria massa esforç fins ara. Sempre podreu restaurar una versió des d'una font (A, B o C) fent clic al botó corresponent. De totes maneres, per a una gran edició, es recomana emprar un altre editor.

Quan elimino una mica de text, de sobte apareix «<La línia no és codi>» i no es pot suprimir. Què vol dir i com es pot treure?

Per a cada secció igual o diferent, l'editor a la finestra de resultats de la fusió recordarà on comença o on acaba. «<La línia no és codi>» vol dir que no queda res en una secció, ni tan sols un caràcter de línia nova. Això pot succeir mentre es fusiona automàticament o s'edita. Això no és cap problema, ja que aquest suggeriment no apareixerà en el fitxer desat. Si voleu recuperar la font original, només haureu de seleccionar la secció (feu clic a la columna del resum a l'esquerra) i després feu clic al botó de la font amb el contingut necessari (A/B o C).

Per què el &kdiff3; no admet el ressaltat de la sintaxi?

El &kdiff3; ja utilitza molts colors per a ressaltar les diferències. Més ressaltat seria confús. Per a això, empreu un altre editor.

Puc emprar el &kdiff3; per a comparar fitxers del LibreOffice/OpenOffice.org, &Microsoft; Word, &Microsoft; Excel, &PDF;, &etc;?

Encara que el &kdiff3; analitzarà qualsevol classe de fitxer, el resultat probablement no serà molt satisfactori.

El &kdiff3; es va crear per a comparar fitxers de text pur. El LibreOffice/OpenOffice.org, el &Microsoft; Word, el &Microsoft; Excel, &etc; emmagatzemen molta més informació en els fitxers (sobre les lletres, imatges, pàgines, colors, &etc;) que el &kdiff3; no coneix. Per tant, el &kdiff3; mostrarà el contingut del fitxer interpretat com a text pur, però això podria ser il·legible o almenys es veurà molt estrany.

Com la majoria dels programes avui en dia emmagatzemen el seu contingut en el format &XML;, és possible que pugueu llegir-lo com a text pur. Llavors, si el canvi només ha estat petit, el &kdiff3; encara podria ajudar-vos.

La millor solució si només voleu comparar el text (sense objectes incrustats com les imatges) és utilitzar els elements de menú Edita Selecciona-ho tot i Edita Copia en el vostre programa per a copiar el text interessant en el porta-retalls i després en el &kdiff3; enganxar el text en qualsevol finestra d'entrada de les diferències. (Vegeu també Seleccionar, copiar i enganxar).

On està l'opció de carpetes Llista només les diferències en els espais?

Ara hi ha diverses opcions «Mostra» al menú Carpeta. Inhabilitant Mostra els fitxers idèntics aconseguireu el que solíeu fer habilitant Llista només les diferències en els espais.

Com puc fer una gran selecció a la finestra d'entrada de les diferències? El desplaçament triga tant temps?

Inicieu la selecció com de costum (feu clic i manteniu premut el &BER;). Llavors empreu les tecles de navegació (&pex;, &PgUp;, &PgDn;) mentre manteniu premut el &BER;. (Vegeu també Seleccionar, copiar i enganxar).

Aquí hi ha molta informació, però la meva pregunta encara no s'ha respost.

Si us plau, envieu-me la vostra pregunta. Agraeixo cada comentari.

## Crèdits i llicència

&kdiff3;: Eina per a la comparació i fusió de fitxers i carpetes

Copyright del programa 2002-2007 Joachim Eibl joachim.eibl at gmx.de

Diverses idees genials i informes d'errors han vingut de col·legues i molta gent a la Wild Wild Web. Gràcies a vosaltres!

Copyright de la documentació © 2002-2007 Joachim Eibl joachim.eibl at gmx.de

Copyright de la documentació © 2017-2019 Michael Reeves reeves.87 at gmail.com

Traductor de la documentació: &credits.Antoni.Bella;

&underFDL; &underGPL;
&documentation.index;