# El manual del &kdiff3;

Michael
Reeves

     reeves.87@gmail.com

Joachim
Eibl

     joachim.eibl at gmx.de

&traductor.Antoni.Bella;
2002-2007
Joachim Eibl
2017-2019
Michael Reeves
&FDLNotice;
22 de febrer de 2019
1.08.02

El &kdiff3; és una eina per a la comparació i fusionat de fitxers i directoris

- compara i fusiona dos o tres fitxers o directoris des de l'entrada,

- mostra les diferències línia per línia i caràcter per caràcter (!),

- proporciona la facilitat del fusionat automàtic,

- té un editor per a la solució còmoda dels conflictes de fusionat,

- proporciona transparència de xarxa a través del KIO,

- té opcions per a ressaltar o ocultar els canvis en els espais en blanc o els comentaris,

- admet Unicode, UTF-8 i altres codificacions de fitxer,

- imprimeix les diferències,

- admet la paraula clau per al control de versions i un historial de les fusions.

Aquest document descriu la versió 1.8 del &kdiff3;.

KDE
kdiff3
diff
fusiona
CVS
diff triple
compara
fitxers
directoris
control de versions
fusionat a tres bandes
diferències a la línia
sincronitza
kpart
kio
transparent a la xarxa
editor
espai en blanc
comentaris

## Introducció

### Un altre frontal de diferències?

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

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

Llavors el fusionat 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 fusionat.

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. El fusionat 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 fusionat dels directoris, la qual va convertir el programa gairebé en tot un explorador 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;):

El fusionat a 3 bandes està totalment admès. Aquest és útil si dues persones canvien el codi de forma independent. El fitxer original (la base) s'utilitzarà per ajudar al &kdiff3; a seleccionar automàticament els canvis correctes. L'editor del fusionat 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 d'entrada fusionats:

El &kdiff3; també ajuda a comparar i fusionar directoris sencers. Aquesta captura de pantalla mostra el &kdiff3; durant un fusionat de directoris:

### Més característiques

#### Visor 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 espai 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 fitxer 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.

#### Fusionat còmode de dos o tres fitxers d'entrada

Es pot emprar el &kdiff3; per a fusionar dos o tres fitxers d'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 del fusionat.

- 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 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 visor 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

Tingueu 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 directoris diferents, podreu reduir el treball de tipografia especificant el nom de fitxer només per al primer fitxer, &pex;:

    kdiff3 dir1/nom_fitxer dir2 dir3

#### Línia d'ordres per iniciar una comparació o fusionat de directoris:

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

    kdiff3 dir1 dir2
       kdiff3 dir1 dir2 -o directori_destinació
       kdiff3 dir1 dir2 dir3
       kdiff3 dir1 dir2 dir3 -o directori_destinació

Per a comparar i fusionar directoris, 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).
      --auto                    Sense IGU si tots els conflictes es poden resoldre automàticament. (Necessita -o fitxer)
      --qall                    No es resoldran automàticament els conflictes. (Per compatibilitat...)
      --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               Solapa un ajustament de la configuració. Useu-lo un cop per a cada ajustament. P. ex.: --cs "AutoAdvance=1"
      --confighelp              Mostra una llista dels ajustaments 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 els altres ajustaments. 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. La integració dels ajustaments 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 un directori mitjançant el botó Dir.... Si s'especifica un directori per a A, s'iniciarà una comparació/fusionat de directoris. Si A especifica un fitxer però B, C o la sortida especifiquen un directori, llavors el &kdiff3; utilitzarà el nom de fitxer de A en els directoris especificats.

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

El botó Configura... obrirà el diàleg d'opcions, 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ó arrossega i deixa 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 de similars són 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.

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

Avís: Alguns editors encara interpreten l'arrossega i deixa anar en un altre programa com un retalla (en lloc de copia) i enganxa. 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 examinar i el número de línia de la primera línia visible a la finestra. (Tingueu 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 de resum». Si ocorre cap diferència en una línia, la columna de 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 de resum comprimit 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 de la visió de conjunt en píxels, diverses línies d'entrada compartiran una línia de la visió de conjunt. 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 de la visió de conjunt, 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 (drecera &Ctrl;Y). Apareixerà una barra taronja a la columna de resum 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, el fusionat 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 per 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 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 del fusionat

La finestra de l'editor per a la sortida del fusionat (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 fusionat automàtic, però sovint també contindrà conflictes.

El desament estarà inhabilitat fins que es resolguin tots els conflictes! (Utilitzeu els botons Vés 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 del fusionat 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 portaria molt de 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 el fusionat dels fitxers si el sagnat s'ha canviat en moltes línies.

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

En fer clic a dins de la columna de 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 el «Color de fons de les diferències de l'interval actual» 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 inserir (o eliminar si ja està inserit) les línies des de la respectiva font. Per 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 de A, primer feu clic a B i després a A.

Si utilitzeu el botó Vés 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 del fusionat. 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 del fusionat.

De vegades, quan s'elimina una línia, ja sigui per fusionat automàtic 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ò tot i així aneu amb compte en fer-ho.

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

El fusionat 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 el fusionat. Per a accions que canviïn les vostres modificacions anteriors, el &kdiff3; demanarà la vostra confirmació abans de continuar.

Nota: 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.

#### Fusionat automàtic 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 el fusionat.

El &kdiff3; ofereix fusionat automàtic per a aquests elements. 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 de B o, si està disponible, 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). Aquest fusionat automàtic pot executar-se immediatament després que comenci un fusionat (activeu l'opció Executa la fusió automàtica amb l'expressió regular a l'inici del fusionat) o més tard mitjançant l'element de menú Fusiona Executa la fusió automàtica amb l'expressió regular.

També s'admet el fusionat automàtic per a l'historial del control de versions (també anomenat «registre»). El fusionat automàtic de l'historial pot executar-se immediatament quan comença el fusionat activant l'opció Fusiona l'historial del control de versions quan es comenci a fusionar a l'element Fusiona al 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 al 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 fusionat contindrà diverses entrades que apareixeran com a conflictes durant el fusionat 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 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. 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.

Tingueu 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 al diàleg de configuració per 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 obtenir detalls sobre les expressions regulars, consulteu la documentació sobre expressions regulars de Trolltech. 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ó Ajustaments del fusionat.

### 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 del fusionat també podreu utilitzar les altres tecles per editar. Podeu alternar entre el mode insereix i sobreescriu amb la tecla &Ins;. (De manera predeterminada és el mode insereix).

Un clic amb el &BER; dins de qualsevol columna de 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 el fusionat 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 següent/anterior (&Ctrl;&PgDn;/&Ctrl;&PgUp;), o al conflicte sense resoldre següent/anterior. Recordeu que per al &kdiff3; un «conflicte» que no s'ha resolt automàticament a l'inici del fusionat 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ó Vés 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 vulgueu 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 als ajustaments de les diferències i fusionat: podeu especificar el Retard de l'avanç automàtic 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 del fusionat 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 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. 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;&Del;) 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 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 Directori en el diàleg de configuració, el fitxer existent serà reanomenat amb una extensió `.orig`, però si aquest fitxer existeix, s'eliminarà. 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 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 ajustar l'interval. A causa dels diferents diàlegs d'impressió en els diferents sistemes operatius, varia el mètode per 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 imprimir es prenen de les opcions normals:

- Tipus de 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;...).

#### Tipus de lletra

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

Tipus de lletra en cursiva per a les diferències d'espais:

  Si la seleccioneu, les diferències de text es dibuixaran amb la versió en cursiva del tipus de lletra seleccionat. Si el tipus de lletra no admet cursiva, llavors això no farà res.

#### Colors

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.

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 que no disponibles:

  En general negre.

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

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.

#### Ajustaments de l'editor

El tabulador insereix espais:

  Si està inhabilitada i premeu la tecla &Tab;, 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.

#### Ajustaments 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 el fusionat, no s'ignoraran els espais en blanc.

Ignora els números:

  El valor predeterminat és desactivada. 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++:

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

Ignora les majúscules/minúscules:

  El valor predeterminat és desactivada. 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 per a la coincidència de les línies:

  Vegeu la següent secció.

Esforça't:

  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.

#### Ajustaments del fusionat

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

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

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'aplica 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é Fusionat automàtic....

Executa la fusió automàtica amb l'expressió regular a l'inici del fusionat:

  Si està activada, el &kdiff3; executarà el fusionat automàtic utilitzant l'opció Fusiona automàticament amb l'expressió regular quan s'inicia un fusionat.

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

  Expressió regular per a l'inici de les entrades de l'historial de fusionat. 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 de diverses línies. Especifiqueu l'expressió regular per a detectar la primera línia (sense el comentari inicial). Empreu els parèntesis per 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é el Fusionat automàtic....

Ordena el fusionat 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é el Fusionat automàtic....

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

  Si està activada, el &kdiff3; executarà el fusionat automàtic de l'historial utilitzant les opcions abans esmentades quan s'inicia un fusionat.

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 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 el fusionat de l'historial.

Ordre de fusió irrellevant:

  Especifiqueu una ordre que s'haurà de cridar quan el &kdiff3; detecti que per a un fusionat 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 l'Fusiona automàticament amb l'expressió regular o en l'historial no es consideraran rellevants.

#### Fusionar els directoris

Aquestes opcions estan relacionades amb l'exploració dels directoris i el maneig del fusionat: Per als detalls, vegeu Comparar/Fusionar directoris.

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

Fitxers per a 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`, s'eliminarà per a fer-ho sense còpia de seguretat.

#### Opcions regional i d'idioma

Idioma:

  Ajusta l'idioma de la interfície d'usuari. Canviar aquesta opció no afectarà el programa en execució. Haureu de sortir i reiniciar el &kdiff3; perquè es canviï l'idioma. (Aquesta opció no estarà disponible a la versió dels &frameworks; del &kdiff3;).

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.

Codificació local:

  A sobre dels selectors del còdec apareixerà una 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).

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 el fusionat i desar:

  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 del fusionat. 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).

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.

Mostra els caràcters d'espai en blanc i els de tabulació per a les diferències:

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

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. (Tingueu en compte que això també s'aplicarà als canvis en els números o comentaris si estan actives les opcions «Ignora els números» o «Ignora els comentaris de C/C++»).

Opcions per a 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 a 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).

Comença un fusionat ràpidament:

  De vegades esteu veient les diferències d'espais i decidiu fusionar. «Fusiona el fitxer actual» al menú Directori també funciona si només compareu dos fitxers. 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 tornar a iniciar un fusionat, es mantindrà el nom del fitxer de sortida).

#### 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 per a la 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 per a la 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 sigui desitjable ja que la primera lletra conté la informació realment interessant. Per 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 per a la 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 http://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'ordre del preprocessador per a la coincidència de les línies també podreu ignorar altres tipus de comentaris, convertint-los en comentaris a C/C++. Exemple: per 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++» per a que tingui efecte. Una ordre apropiada 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 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 sensibles a majú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 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\$/'

El «\|» separa les possibles paraules clau. És possible que vulgueu modificar aquesta llista segons les vostres necessitats. El «\» abans del «$» és necessari perquè en cas contrari el «$» coincidirà amb el final de la línia.

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ó incorporada. Però com un altre exemple, així és com es veuria com una ordre del preprocessador per a la 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 preservar.

##### 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 per a la coincidència de les línies,

- Ignora les majúscules/minúscules (conversió a majúscules),

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

- Ignora els números,

- Ignora els espais en blanc

Les dades després del preprocessador normal es conservaran per a la seva visualització i fusionat. 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, tingueu en compte que el preprocessador per a la 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 un fusionat, 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 una ordre del preprocessador per a la coincidència de les línies està activa. El fusionat no es completarà fins que es resolguin tots els conflictes. Si inhabiliteu «Mostra els espais en blanc», també seran visibles les diferències que es van eliminar amb l'ordre del preprocessador per a la coincidència de les línies. Si el botó Desa roman inhabilitat durant un fusionat (a causa que romanen conflictes), podreu habilitar «Mostra els espais en blanc». Si no voleu fusionar manualment aquestes diferències menys importants, podreu seleccionar «Escull [A|B|C] a tots els conflictes dels espais en blanc no resolts» al menú Fusiona.

## Comparació i fusionat de directoris amb el &kdiff3;

### Introducció a la comparació i fusionat de directoris

Sovint, els programadors han de modificar molts fitxers en un directori per aconseguir el seu propòsit. Per això, el &kdiff3; també permet comparar i fusionar directoris complets de forma recursiva!

Encara que comparar i fusionar directoris 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 un fusionat, 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 tingueu 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 tingueu-ho sempre present:

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

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

- ...llegeix i compara dos o tres directoris 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 fusionat, el qual podreu canviar abans d'iniciar el fusionat del directori,

- ...permet simular el fusionat i llista les accions que tindran lloc, sense fer-les realment,

- ...permet realment fer el fusionat, 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 el fusionat 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 fusionat dels directoris

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

#### Comparar/Fusionar dos directoris:

    kdiff3 dir1 dir2
       kdiff3 dir1 dir2 -o directori_destinació

Si no s'especifica un directori de destinació, el &kdiff3; emprarà dir2.

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

    kdiff3 dir1 dir2 dir3
       kdiff3 dir1 dir2 dir3 -o directori_destinació

Quan es fusionen 3 directoris, s'utilitza dir1 com a base per al fusionat. Si no s'especifica cap directori de destinació, el &kdiff3; utilitzarà dir3 com el directori de destinació per al fusionat.

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

### Informació visible en fusionar directoris

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

Quan es completa l'exploració del directori, 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 directori que s'ha trobat durant l'exploració es mostrarà aquí en un arbre. Podreu seleccionar un element fent-hi clic amb el ratolí.

Els directoris estaran plegats de manera predeterminada. Els 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ú Directori també conté dues accions Plega tots els subdirectoris i Desplega tots els subdirectors amb les quals podreu contraure o expandir tots els directoris 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 el primer directori («A»). Pot ser una d'aquestes:

- Fitxer normal

- Directori normal (imatge del directori)

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

- Enllaç amb un directori (imatge del directori amb una fletxa d'enllaç)

Si el tipus de fitxer és diferent en els altres directoris, això serà visible en les columnes A/B/C i en la finestra que mostra els detalls sobre l'element seleccionat. Tingueu en compte que, en aquest cas, no es podrà seleccionar automàticament cap operació de fusionat. En iniciar el fusionat, 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 aquest directori.

- 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.

Els directoris es consideraran iguals si tots els elements que contenen són idèntics. Llavors també tindran el mateix color. Però l'antiguitat d'un directori no es considera 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 els directoris, el &kdiff3; també avaluarà una proposta per a una operació de fusionat. 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/&Del; seleccionarà A/B/C/Fusiona/Suprimeix respectivament, si està disponible). Aquesta operació s'executarà durant el fusionat. Quines operacions hi haurà disponibles, dependrà de l'element i del mode de fusionat en què esteu. El mode de fusionat serà un de

- Fusionar tres directoris («A» es tracta com la base més antiga d'ambdós).

- Fusionar dos directoris.

- Mode sincronitza dos directoris (activat mitjançant l'opció «Sincronitza els directoris»).

En el fusionat de tres directoris, la proposta d'operació serà: Si per a un element...

- ...els tres directoris 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 un directori, B és un fitxer): «Error: Tipus de fitxer en conflicte». Si bé aquests elements existeixen, el fusionat de directoris no pot començar.

En el fusionat de dos directoris, la proposta d'operació serà: Si per a un element...

- ...ambdós directoris 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 un directori, B és un fitxer): «Error: Tipus de fitxer en conflicte». Si bé aquests elements existeixen, el fusionat de directoris no pot començar.

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

- ...ambdós directoris 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 ambdós directoris. (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 un directori, B és un fitxer): «Error: Tipus de fitxer en conflicte». Si bé aquests elements existeixen, el fusionat de directoris no pot començar.

Quan es fusionen dos directoris 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, el fusionat de directoris no pot començar.

#### La columna Estat

Durant el fusionat, es processarà un fitxer rere l'altre. La columna d'estat mostrarà «Fet» per als elements on l'operació de fusionat ha tingut èxit i altres textos si succeeix alguna cosa inesperada. Quan es completa un fusionat, 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 3 directoris).

#### 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ú Directori conté les entrades:

- Mostra els fitxers idèntics: els fitxers que s'han detectat com a iguals en tots els directoris d'entrada.

- Mostra els fitxers diferents: els fitxers que existeixen a dos o més directoris 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 als directoris amb una excepció: inhabilitant Mostra els fitxers diferents no ocultarà cap directori sencer. Això només funcionarà per a dins dels fitxers.

Tingueu 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 un fusionat del directori A

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

Recordeu que si no heu especificat explícitament un directori de destinació, llavors la destinació serà «C» en el mode de tres directoris, «B» en el mode de fusionat de dos directoris, i en el mode de sincronització serà «A» o/i «B».

Si heu especificat un directori 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 fusionat de directoris. Marqueu aquestes opcions per evitar sorpreses desagradables:

- Directoris recursius: si està desactivada, no es trobaran els elements en els subdirectoris.

- 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 enumerar més arxius, ha de tornar a escanejar a través de menú Directori 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 directoris per excloure fitxers, la llista de fitxers s'actualitzarà immediatament en tancar el diàleg d'opcions.

Recordeu que quan escriviu en un directori completament nou, generalment també voldreu copiar els fitxers idèntics. En aquest cas, habiliteu l'opció Mostra els fitxers idèntics. Si el directori 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 fusionar tots els elements: Seleccioneu Comença/Continua el fusionat dels directoris al menú Directori 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 fitxers en conflicte encara hi ha alguns elements amb operacions 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 (fusionat d'un sol fitxer), s'obrirà una finestra de fusionat (vegeu la captura de pantalla gran).

En acabar de fusionar manualment un fitxer, torneu a seleccionar Comença/Continua el fusionat dels directoris 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. Al final 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 el fusionat, el &kdiff3; us informarà mitjançant un quadre de missatge.

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

### Opcions per a comparar i fusionar directoris

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

Directoris recursius:

  Seleccioneu si voleu cercar als directoris de forma recursiva.

Patró/ons dels fitxers:

  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'utilitza en els directoris.

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 dels directoris:

  Els directoris 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».

Utilitza «CVS-Ignore»:

  S'ignoraran els fitxers i directoris que també serien ignorats pel CVS. El CVS ignora molts fitxers generats automàticament. El gran avantatge és que pot ser un directori específic a través d'un fitxer local `.cvsignore`. (Vegeu info:/cvs/cvsignore).

Cerca als fitxers i directoris 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 activada.

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 desactivada.

Segueix els enllaços de directori:

  Per als enllaços a directoris: quan està inhabilitada, es compararan els enllaços simbòlics. Quan està habilitada, l'enllaç es tractarà com un directori i s'explorarà de forma recursiva. (Recordeu que el programa no comprovarà si l'enllaç és «recursiu». Llavors, per exemple, un directori que conté un enllaç a un directori 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 desactivada.

La comparació dels noms de fitxer és sensible a 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 del patrons de fitxer apropiats).

  Confia en la data de modificació:

    Si compareu directoris 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 desactivada.

  Confia en la mida:

    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 desactivada.

Sincronitza els directoris:

  Activa el Mode de sincronització quan es comparen dos directoris i no s'ha especificat cap directori de destinació explícit. En aquest mode, les operacions propostes s'escolliran de manera que ambdós directoris font siguin iguals després. A més, el resultat del fusionat s'escriurà en ambdós directoris. El valor predeterminat és desactivada.

Copia el més nou en comptes de fusionar-los:

  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 assegurar-vos en tots els casos). El valor predeterminat és desactivada.

Fitxers per a còpia de seguretat (.orig):

  Si se substitueix un fitxer o directori complet per un altre 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à el fusionat normal de fitxers individuals, no només en el mode fusionat de directoris. El valor predeterminat és activada.

### Altres funcions a la finestra per al fusionat de directoris

#### Mode de pantalla dividida/completa

En general, la vista de llista per al fusionat de directoris 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 Vista de pantalla dividida en text i directoris al menú Directori. Després podreu utilitzar Commuta la vista al menú Directori 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ú Directori. 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 un fusionat de directori.

Fixeu-vos, que aquesta informació d'estat es perdrà quan torneu a executar una anàlisi de directori: Directori 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 la que es trobin. D'aquesta manera només es podran triar fins a tres fitxers.

Continueu triant Compara els fitxers seleccionats explícitament o Fusiona els fitxers seleccionats explícitament des del menú Directori. 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 fusionat d'un fitxer succeirà a la mateixa finestra. Si s'utilitza aquest mètode per als directoris, 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 explorar els directoris. Això vol dir que podreu especificar fitxers i directoris en recursos locals i remots mitjançant els &URL;.

Exemple:

    kdiff3 test.cpp  ftp://ftp.faraway.org/test.cpp
       kdiff3 tar:/home/hacker/archive.tar.gz/dir ./dir

La primera línia compara un fitxer local amb un fitxer en un servidor &FTP;. La segona línia compara un directori dins d'un arxiu comprimit amb un directori 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 directoris 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 directori. 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). (Per a modificar els permisos o el temps de modificació només és possible per als fitxers locals).

### Emprar el &kdiff3; com a una KPart

El &kdiff3; és una KPart. Actualment implementa la interfície KParts::ReadOnlyPart.

El seu ús principal és com a visor de diferències en el &kdevelop;. El &kdevelop; sempre inicia primer el visor de diferències intern. Per a invocar el &kdiff3;, premeu el &BDR; a la finestra de la vista de diferències i seleccioneu Mostra a la part del &kdiff3; al menú contextual.

El &kdiff3; normalment requereix dos fitxers complets com a entrada. Quan s'utilitza com a part, el &kdiff3; assumirà que el fitxer d'entrada és un fitxer de pedaç en el format unificat. Llavors el &kdiff3; recuperarà els noms de fitxer originals des del fitxer de pedaç. Almenys un dels dos fitxers haurà d'estar disponible. Llavors el &kdiff3; invocarà l'ordre `patch` per a recrear el segon fitxer.

En el &dolphin; podreu seleccionar un fitxer de pedaç i seleccionar l'element Vista prèvia a Part del &kdiff3; al menú contextual. Tingueu en compte que això no funcionarà si cap dels fitxers originals està disponible, i no és fiable si els fitxers originals han canviat des que es va generar el fitxer de pedaç.

Quan s'executa com a part, el &kdiff3; només proporciona una diferència de dos fitxers amb una barra d'eines i un menú molt petits. De manera que el fusionat o la comparació de directoris no són admeses.

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

Es pot emprar el &kdiff3; com a una eina de «diff» i fusionat 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 dos «commits», 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 fusionat de la forma habitual, n'hi haurà prou amb confirmar els canvis per 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, &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 fer 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 a 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 del fusionat?

Per a cada secció igual o diferent, l'editor a la finestra de resultats del fusionat 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 el fusionat, 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í).

Per què l'editor a la finestra de resultats del fusionat 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 del fusionat 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 de resum 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 OpenOffice.org, &Microsoft; Word, &Microsoft; Excel, &PDF;, &etc;?

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

El &kdiff3; es va crear per a comparar fitxers de text pur. L'OpenOffice.org, el &Microsoft; Word, el &Microsoft; Excel, &etc; emmagatzemen molta més informació en els fitxers (sobre els tipus de lletra, 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 al menys 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ó per a directoris Llista només les diferències en els espais?

Ara hi ha diverses opcions «Mostra» al menú Directori. 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 porta molt de 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 fusionat de fitxers i directoris

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

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

&underFDL; &underGPL;

&documentation.index;