# Priročnik za &kdiff3;

## Uvod

### Še eno začelje Diffa?

Obstaja več grafičnih orodij za razlikovanje. Zakaj izbrati &kdiff3;? Naj povem, zakaj sem ga napisal.

&kdiff3; se je začel, ker sem moral opraviti težko zlivanje. Zlivanje je potrebno, kadar več ljudi dela na istih datotekah v projektu. Zlivanje je lahko nekoliko avtomatizirano, ko ima orodje za spajanje ne le nove spremenjene datoteke (imenovane "veje"), temveč tudi izvirno datoteko (imenovano "osnova"). Orodje za zlivanje bo samodejno izbralo vse spremembe, ki so bile izvedene samo v eni veji. Ko več sodelujočih spremeni iste vrstice, potem orodje za spajanje zazna konflikt, ki ga je treba rešiti ročno.

Zlivanje je bilo takrat težko, ker je en sodelujoči spremenil marsikaj in popravil zamik na mnogih mestih. Drugi sodelavec je prav tako spremenil veliko besedila v isti datoteki, kar je povzročilo več sporov pri zlivanju.

Orodje, ki sem ga takrat uporabil, je pokazalo samo spremenjene vrstice, ne pa tudi tega, kar se je spremenilo v teh vrsticah. In ni bilo nobenih informacij o tem, kje je bila spremenjen le zamik. Zlivanje je bilo majhna nočna mora.

To je bil torej začetek. Prva različica je lahko pokazala razlike znotraj vrstice in je pokazala razlike v praznem prostoru. Kasneje so bile dodane številne druge funkcije za povečanje uporabnosti.

Na primer, če želite hitro primerjati nekaj besedila, ga lahko kopirate v odložišče in prilepite v katero koli okno diff.

Funkcija, ki je zahtevala veliko truda, je primerjava in zlivanje map, ki je program spremenila skoraj v popoln brskalnik datotek.

Upam, da &kdiff3; deluje tudi za vas. Uživajte!

Joachim Eibl (2003)

### Posnetki zaslona in zmožnosti

Ta posnetek zaslona prikazuje razliko med dvema besedilnima datotekama (z uporabo zgodnje različice &kdiff3;):

3-smerno zlivanje je v celoti podprto. To je uporabno, če dve osebi neodvisno spreminjata kodo. Izvirna datoteka (osnova) se uporablja za pomoč &kdiff3; za samodejno izbiro pravilnih sprememb. Urejevalnik zlivanja pod oknidiff vam omogoča reševanje sporov, hkrati pa vam prikazuje rezultat, ki ga boste dobili. Izpis lahko celo urejate. Ta posnetek zaslona prikazuje zlivanje treh vhodnih datotek:

&kdiff3; pomaga tudi pri primerjavi in zlivanju celotnih map. Ta posnetek zaslona prikazuje &kdiff3; med zlivanjem map:

### Več zmožnosti

#### Pregledovalnik razlik vrstica po vrstici in znak po znaku

Z uporabo možnosti grafičnega barvnega prikaza &kdiff3; točno pokaže v čem je razlika. Ko boste morali opraviti veliko pregledov kode, vam bo to všeč.

#### Oglejte si razlike v belem prostoru v enem samem pogledu

Presledki in zavihki, ki se razlikujejo, so vidni. Ko se vrstice razlikujejo le po količini praznega prostora, je to mogoče videti v enem samem pogledu v stolpcu s povzetkom na levi strani. (Nič več skrbi, ko ljudje spremenijo zamik.)

#### Trojni dif

Analizirajte tri datoteke in ugotovite, kje se razlikujejo.

Levo/srednje/desno okno se imenuje A/B/C in ima barvo modro/zeleno/magenta.

Če je ena datoteka v vrstici enaka in ena drugačna, potem barva prikazuje, katera datoteka je drugačna. Rdeča barva pomeni, da sta obe drugi datoteki različni.

#### Udobno zlivanje dveh ali treh vhodnih datotek

&kdiff3; se lahko uporablja za združevanje dveh ali treh vhodnih datotek in samodejno zlije čim več. Rezultat je predstavljen v oknu, ki ga je mogoče urejati, kjer je večino konfliktov mogoče rešiti z enim samim klikom miške: izberite ustrezne gumbe ... pri A/ B/C za izbiro vira, ki naj bo uporabljen. Izberete lahko tudi več kot en vir. Ker je to izhodno okno urejevalnik, lahko tudi konflikte, ki potrebujejo nadaljnje popravke, rešite tukaj, ne da bi potrebovali drugo orodje.

#### in ...

- Hitra navigacija prek gumbov.

- Klik z miško na stolpec s povzetkom sinhronizira vsa okna, da prikažejo isti položaj.

- Izberite in kopirajte iz katerega koli okna ter prilepite v okno z rezultati zlivanja.

- Pregledni stolpec, ki prikazuje, kje so spremembe in koflikti.

- Barve so prilagodljive vašim preferencam.

- Nastavljiva velikost zavihka.

- Možnost vstavljanja presledkov namesto tabulatorjev.

- Udobno odprite datoteke prek pogovornega okna ali jih določite v ukazni vrstici.

- Poiščite nize v vseh besedilnih oknih z Uredi Najdi (&Ctrl;F) in Uredi Najdi naslednje (F3) menijske elemente.

- Pokaže številke vrstic za vsako vrstico.

- Prilepi odložišče ali povleče besedilo v okno vnosa razlike.

- Preglednost omrežja prek KIO.

- Lahko se uporablja kot pregledovalnik razlik iz &kdevelop; 3.

- Prelom besed za dolge vrstice.

- Podpora za Unicode, UTF-8 in druge kodeke.

- Podpora za jezike od desne proti levi.

- ...

## Primerjava in zlivanje datotek

### Možnosti ukazne vrstice

#### Primerjava dveh datotek:

    kdiff3 datoteka1 datoteka2

#### Zlivanje 2 datotek:

    kdiff3 datoteka1 datoteka2 -m
       kdiff3 datoteka1 datoteka2 -o izhodnadatoteka

#### Primerjava 3 datotek:

    kdiff3 datoteka1 datoteka2 datoteka3

#### Zlivanje 3 datotek:

    kdiff3 datoteka1 datoteka2 datoteka3 -m
    kdiff3 datoteka1 datoteka2 datoteka3 -o izhodnadatoteka

Upoštevajte, da bo `datoteka1` obravnavana kot osnova `datoteka2` in `datoteka3`.

#### Poseben primer: datoteke z enakim imenom

Če imajo vse datoteke enako ime, vendar so v različnih mapah, lahko zmanjšate tipkanje tako, da določite ime datoteke samo za prvo datoteko, ⪚:

    kdiff3 mapa1/imedatoteke mapa2 mapa3

#### Ukazna vrstica za začetek primerjave ali zlivanje map:

To je zelo podobno, vendar gre zdaj za mape.

    kdiff3 folder1 folder2
       kdiff3 folder1 folder2 -o destdir
       kdiff3 folder1 folder2 folder3
       kdiff3 folder1 folder2 folder3 -o destdir

Za primerjavo in združevanje map lahko nadaljujete z branjem tukaj.

#### Druge možnosti ukazne vrstice

Če želite videti vse razpoložljive možnosti ukazne vrstice, vnesite

    kdiff3 --help

Primer izhoda:

    Options:
      -m, --merge               Zlij input.
      -b, --base file           Eksplicitna datoteka osnova. Zaradi združjivosti z določenimi orodji.
      -o, --output file         Output datoteka. Pomeni -m. Npr.: -o newfile.txt
      --out file                Spet output datoteka. (Zaradi združjivosti z določenimi orodji.)
      --noauto                  Prezri --auto in vedno pokaži uporabniški vmesnik.
      --auto                    Brez grafičnega vmesnika, če so vsi konflikti samodejno rešljivi. (Potrebuje -o datoteka)
      --L1 alias1               Vidna zamenjava imena za vhodno datoteko 1 (osnova).
      --L2 alias2               Vidna zamenjava imena za vhodno datoteko 2.
      --L3 alias3               Vidna zamenjava imena za vhodno datoteko 3.
      -L, --fname alias         Alternativna vidna zamenjava imena. Ena omemba za vsak input.
      --cs string               Preglasi nastavitev config. Uporaba enkratno za vsako nastavitev. npr.: --cs "AutoAdvance=1"
      --confighelp              Prikaži seznam nastavitev konfiguracije in trenutne vrednosti.
      --config file             Uporabi drugo datoteko config.

Možnost `--cs` vam omogoča prilagoditev konfiguracijske vrednosti, ki je sicer nastavljiva samo prek konfiguracijskih pogovornih oken. Vendar se zavedajte, da ko se &kdiff3; nato prekine, bo spremenjena vrednost shranjena skupaj z drugimi nastavitvami. Z `--confighelp` lahko izveste imena razpoložljivih elementov in trenutne vrednosti.

Z `--config` lahko določite drugo konfiguracijsko datoteko. Ko pogosto uporabljate &kdiff3; s popolnoma različnimi nastavitvami vam to omogoča enostavno preklapljanje med njimi.

#### Zanemarljive možnosti ukazne vrstice

Veliko ljudi želi uporabljati &kdiff3; z nekim sistemom za nadzor različic. Ko pa sistem za nadzor različic pokliče &kdiff3; z uporabo parametrov ukazne vrstice, ki &kdiff3; ne prepozna, se potem &kdiff3; zaključi z napako. Element Integracija v pogovornem oknu z nastavitvami omogoča podajanje parametrov ukazne vrstice, ki naj jih &kdiff3; prezre. Prikazali se bodo v pomoči za uporabo, kot v tem primeru:

    --foo Prezrto. (Uporabnik definiran.)

Možnosti ukazne vrstice, ki jih je treba prezreti:

- Seznam možnosti, ločenih s podpičjem ';'. Ko se ena od teh možnosti prikaže v ukazni vrstici, potem ga bo &kdiff3; prezrl in zagnal brez poročanja o napaki. (Privzeto je "`u;query;html;abort`").

Ko to ni dovolj, je priporočljivo napisati skript lupine, ki prevede to možnost.

### Odpri pogovorno okno

Ker mora biti možno izbirati veliko vhodnih datotek, ima program posebno pogovorno okno za odpiranje:

Pogovorno okno za odpiranje vam omogoča ročno urejanje imen datotek, izbiro datoteke v brskalniku datotek prek gumba Datoteka... ali vam omogoča izbiro nedavnih datotek s spustnih seznamov. Če znova odprete pogovorno okno, bodo trenutna imena še vedno tam. Tretja vhodna datoteka ni potrebna. Če vnos za C ostane prazen, bo opravljena le analiza razlike v dveh datotekah.

Prav tako lahko izberete mapo z gumbom Mapa.... Če je za A podana mapa, se začne primerjava /združevanje map. Če A določa datoteko, vendar B, C ali izhod določa mapo, potem &kdiff3; uporablja ime datoteke iz A v navedenih mapah.

Če je izbrano potrditveno polje Združi, postane vrstica Izhod možna za urejanje. Vendar ni treba takoj določiti imena izhodne datoteke. To lahko tudi odložite do shranjevanja.

Gumb Konfiguriraj... odpre pogovorno okno z nastavitvami, tako da lahko nastavite možnosti, preden zaženete analizo.

### Prilepi in spusti vnos

Včasih želite primerjati dele besedila, ki ni lastna datoteka. &kdiff3; omogoča tudi lepljenje besedila iz odložišča v okno za vnos razlike, ki ima fokus. Analiza diff se zgodi takoj. V odprtem pogovornem oknu vam takrat ni treba določiti datotek, ampak ga samo zaprete z gumbom Prekliči.

Uporabite lahko tudi povleci in spusti: povlecite datoteko iz upravljalnika datotek ali izbrano besedilo iz urejevalnika in ga spustite v okno za vnos razlike.

Kaj je ideja? Včasih datoteka vsebuje dve podobni funkciji, vendar je preverjanje, kako podobni sta v resnici, velik napor, če morate najprej ustvariti dve datoteki in ju nato naložiti. Zdaj lahko preprosto kopirate, prilepite in primerjate ustrezne razdelke.

Trenutno ne morete vleči ničesar iz &kdiff3;. Podprto je samo spuščanje vnosa razlike.

Nekateri urejevalniki si še vedno razlagajo tehniko povleci in spusti v drug program kot izreži (namesto kopiraj) in prilepi. Vaši izvirni podatki bodo takrat morda izgubljeni.

### Primerjava datotek in razlaga informacij v vnosnih oknih

#### Vrstica informacij

Na vrhu vsakega besedilnega okna je njegova "vrstica informacij". Vrstice informacij vnosnih oken vsebujejo črko A, B ali C, ime datoteke, ki ga je mogoče urejati, gumb za brskanje in številko vrstice prve vidne vrstice v oknu. (Upoštevajte, da okno C ni obvezno.) Vsaka informacijska vrstica je prikazana v drugi barvi.

Ko izberete drugo datoteko z brskanjem ali dokončate urejanje imena datoteke tukaj s pritiskom na &Enter;, se bo nova datoteka naložila in primerjala z že naloženimi datotekami.

#### Barvanje

Trem vnosnim oknom so dodeljene črke A, B in C. A ima modro barvo, B zeleno in C škrlatno. (To so privzete vrednosti, vendar jih lahko spremenite v elementu Barva v pogovornem oknu z nastavitvami.)

Ko je zaznana razlika, barva pokaže, katera vhodna datoteka se razlikuje. Če se obe drugi vhodni datoteki razlikujeta, je barva uporabljena za izražanje tega, privzeto rdeča (možnost Barva spora v elementu Barva v pogovornem oknu z nastavitvami). Ta barvna shema je še posebej uporabna v primeru treh vhodnih datotek, kar bo prikazano v naslednjem razdelku (Zlivanje).

#### Stolpec povzetka

Levo od vsakega besedila je stolpec "povzetek". Če so se v vrstici pojavile razlike, bo stolpec s povzetkom prikazal ustrezno barvo. Za razliko v presledku je povzetek označen. Za programske jezike, kjer prazen prostor ni tako pomemben, je to koristno, da na en pogled vidite, ali je bilo kaj pomembnega spremenjeno. (V C/C++ je prazen prostor zanimiv le znotraj nizov, komentarjev, za predprocesor in v nekaterih le zelo ezoteričnih situacijah.)

Navpična črta, ki ločuje stolpec s povzetkom in besedilo, je prekinjena, če vhodna datoteka tam ni imela vrstic. Ko je prelom besed omogočen, je ta navpična črta prikazana s pikami za prelite vrstice.

#### Pregledni stolpec

Na desni strani je levo od navpičnega drsnika viden stolpec »pregled«. Prikazuje stisnjen stolpec povzetka vnosa A. Vse razlike in konflikti so vidni na en pogled. Ko sta uporabljeni samo dve vnosni okni, so vse razlike tukaj rdeče, ker je vsaka razlika tudi konflikt. Črn pravokotnik uokvirja vidni del vnosov. Pri zelo dolgih vhodnih datotekah, ko je število vhodnih vrstic večje od višine preglednega stolpca v slikovnih pikah, si več vhodnih vrstic deli eno pregledno vrstico. Konflikt ima potem glavno prednost pred preprostimi razlikami, ki imajo prednost pred nespremembami, tako da se tu ne izgubi nobena razlika ali konflikt. S klikom na ta pregledni stolpec se prikaže ustrezno besedilo.

#### Ročno poravnavanje črt

Včasih algoritem postavi napačne vrstice eno poleg druge. Ali pa želite primerjati en del besedila z besedilom na povsem drugem mestu v drugi datoteki. Za te situacije lahko ročno naročite &kdiff3; za poravnavo določenih vrstic. Z miško označite besedilo, za katerega želite izboljšati poravnavo, kot bi to naredili za kopiranje in lepljenje v prvem pogledu diff, nato pa izberite Diffview Dodaj ročno diff alignment element menija (&Ctrl;Y). V stolpcu s povzetkom se poleg izbranega besedila prikaže oranžna vrstica. To ponovite za drugi in (če je na voljo) tretji pogled razlike. &kdiff3; bo takoj znova izračunal razlike vsakič, ko boste to storili, in bo poravnal izbrane črte. Seveda se nekatere od prej ujemajočih se vmesnih vrstic morda ne bodo več ujemale.

Trenutno zlivanje ne podpira uporabe pomoči za ročno razlikovanje.

#### Ročno združevanje in ločevanje razlik

V nekaterih primerih &kdiff3; bo videl preveč ali premalo razlik za združevanje. V tem primeru lahko združite ali razdelite obstoječe razdelke.

Dodajte nove razdelke tako, da najprej izberete besedilo v vrsticah, ki sodijo skupaj v katerem koli oknu za vnos (kot pri kopiranju v odložišče). Nato izberite menijski element Zlij Razdeli razliko pri izbiri. Razdeli bodo dodani nad prvo vrstico in pod zadnjo vrstico izbranega besedila. Če želite dodati samo en razdelek, izberite besedilo, ki se začne pri drugem razdelku razdelka.

Za združevanje odsekov v katerem koli vnosnem oknu izberite nekaj v vrsticah iz odsekov, ki jih želite zliti skupaj. (Lahko tudi združite več razdelkov v enem koraku.) Nato izberite menijski element Zlij Zlij izbrane razlike.

### Spajanje in okno urejevalnika spajanja izhodnih podatkov

Okno urejevalnika zlitih izhodov (pod okni za vnos razlike) ima na vrhu tudi informacijsko vrstico, ki prikazuje Izhod:, ime datoteke in oznako `[Modified]`, če ste nekaj uredili. Običajno bo vseboval nekaj besedila prek možnosti samodejnega združevanja, pogosto pa bo vseboval tudi spore.

!!! Shranjevanje je onemogočeno, dokler niso razrešeni vsi konflikti !!! (Uporabite gumb Pojdi na prejšnji/naslednji nerešeni spor, da poiščete preostale spore.)

Pri samo dveh vhodnih datotekah je vsaka razlika tudi konflikt, ki ga je treba rešiti ročno.

Pri treh vhodnih datotekah se prva datoteka obravnava kot osnovna, medtem ko druga in tretja vhodna datoteka vsebujeta spremembe. Če se v kateri koli vrstici spremeni samo vhod B ali vhod C, vendar ne oba, bo spremenjeni vir samodejno izbran. Samo ko sta B in C spremenjena v istih vrsticah, orodje zazna konflikt, ki ga je treba rešiti ročno. Če sta B in C enaka, vendar ne enaka A, je izbran C.

#### Stolpec s povzetkom

Okno urejevalnika zlitih izhodov ima na levi tudi stolpec s povzetkom. Prikazuje črko vnosa, iz katerega je bila izbrana vrstica, ali nič, če so vsi trije viri enaki v vrstici. Za spore prikaže vprašaj "?" in vrstica prikazuje "<Konflikt združevanja>", vse rdeče. Ker bi reševanje konfliktov vrstico za vrstico trajalo zelo dolgo, so vrstice združene v skupine, ki imajo enake razlike in značilnosti konflikta. Toda konflikti samo-belega-prostora so ločeni od sporov, ki niso-belega-prostora, da bi olajšali združevanje datotek, če se je zamik spremenil za veliko vrstic.

#### Nastavitev trenutne skupine in sinhronizacija položaja pogleda zlivanja in razlike

Ko kliknete na stolpec s povzetkom z &LMB; v katerem koli oknu, bo začetek skupine, ki pripada tej vrstici, prikazan v vseh oknih. Ta skupina nato postane "Trenutna skupina". Označeno je z možnostjo Barva ozadja razlike v trenutnem območju elementa Integracija v pogovornem oknu z nastavitvami, na levi strani besedila pa se prikaže črna vrstica.

#### Izbira vnosov A, B ali C za trenutni konflikt in urejanje

Vrstica z gumbi pod menijsko vrstico vsebuje tri gumbe za izbiro vnosa, ki vsebujejo črke A, B in C. Kliknite gumb za izbiro vnosa, da vstavite (ali odstranite, če so že vstavljene) vrstice iz ustreznega vira. Če želite izbrati vrstice iz več vnosov, kliknite ustrezne gumbe v želenem vrstnem redu. Na primer, če želite, da se vrstice iz B prikažejo pred vrsticami iz A v izpisu, najprej kliknite B, nato A .

Če uporabljate gumb Samodejno pojdi na naslednji nerešeni spor po izbiri vira (glejte razdelek Samodejno napredovanje), to onemogočite, preden izberete vrstice iz več vnose ali če želite urediti vrstice po vaši izbiri. V nasprotnem primeru &kdiff3; bo po izbiri prvega vnosa skočil na naslednji konflikt.

Pogosto je koristno neposredno urediti zliti izhod. Stolpec s povzetkom bo pokazal "m" za vsako vrstico, ki je bila ročno spremenjena. Ko so na primer razlike poravnane tako, da preprosto izbiranje vnosov ne bo zadovoljivo, potem lahko označite potrebno besedilo in uporabite običajno kopiraj in prilepi, da ga vstavite v izhod zlivanja.

Včasih, ko je vrstica odstranjena s samodejnim zlivanjem ali urejanjem in v tej skupini ne ostane nobena druga vrstica, se besedilo <Brez izvorne vrstice> se prikaže v tej vrstici. To je samo nadomestni znak za skupino, ko si morda premislite in znova izberete vir. To besedilo ne bo prikazano v shranjeni datoteki ali v nobenem izboru, ki ga želite kopirati in prilepiti.

Besedilo "<Conflikt zlivanja>" se prikaže v odložišču, če kopirate in prilepite besedilo, ki vsebuje takšno vrstico. Vendar bodite pri tem previdni.

#### Izbira vnosa A, B ali C za vse konflikte

Običajno združevanje se bo začelo s samodejnim reševanjem preprostih sporov. Toda meni Združi ponuja nekaj dejanj za druge pogoste potrebe. Če morate za večino sporov izbrati isti vir, potem lahko povsod izberete A, B ali C ali samo za preostale nerešene konflikte ali za nerešene konflikte praznega prostora. Če želite sami določiti vsako posamezno delto, lahko nastavite delte na konflikte. Ali če se želite vrniti na samodejne izbire &kdiff3; nato izberite Samodejno razreši preproste spore. &kdiff3; nato znova zažene združevanje. Za dejanja, ki spremenijo vaše prejšnje spremembe &kdiff3; bo pred nadaljevanjem zahteval vašo potrditev.

Pri izbiri katerega koli vira za nerešene konflikte praznega prostora in možnosti Prezri številke (obravnavaj kot presledek) ali Prezri komentarje C/C++ (obravnavaj kot presledek) na Diff v pogovornem oknu z nastavitvami se uporabijo, potem bodo spremembe v številkah ali komentarjih prav tako obravnavane kot prazen prostor.

#### Samodejno spajanje ključnih besed in zgodovine nadzora različic (dnevnik)

Mnogi sistemi za nadzor različic podpirajo posebne ključne besede v datoteki. (⪚ "`$Datum$`", "`$Glava$`", "`$Avtor$`", "`$Dnevnik$`", &etc;) Med prijavo sistem za nadzor različic (VCS) spremeni te vrstice. Na primer "`$Datum$`" se bo spremenil v "`$Datum: 2005/03/22 18:45:01 $`". Ker bo ta vrstica v vsaki različici datoteke drugačna, bo med združevanjem zahtevala ročno interakcijo.

&kdiff3; ponuja samodejno združevanje za te elemente pri elementu Združi v pogovornem oknu z nastavitvami. Za preproste vrstice, ki se ujemajo z možnostjo Samodejno združevanje regularnega izraza v vseh vhodnih datotekah &kdiff3; bo izbral vrstico iz B ali - če je na voljo - iz C. (Poleg tega je potrebno, da se zadevne vrstice pri primerjavi ujemajo in da prejšnja vrstica ne vsebuje spora.) To samodejno združevanje je mogoče zagnati takoj po začetku združevanja (aktivirajte možnost Zaženi samodejno združevanje regularnega izraza ob združevanju zagon) ali pozneje prek menijske postavke Združi Zaženi samodejno združevanje regularnega izraza.

Podprto je tudi samodejno združevanje za zgodovino nadzora različic (imenovano tudi "dnevnik"). Samodejno združevanje zgodovine se lahko zažene takoj, ko se združevanje začne, tako da aktivirate možnost Združi zgodovino nadzora različic ob začetku združevanja pri elementu Združi v pogovornem oknu z nastavitvami ali pozneje prek Združi Samodejno razreši zgodovinske konflikte menijski element.

Običajno se zgodovina nadzora različic začne z vrstico, ki vsebuje ključno besedo "`$Log$`". To se mora ujemati z možnostjo Regularni izraz za začetek zgodovine:. &kdiff3; zazna, katere naslednje vrstice so v zgodovini, tako da analizira glavne znake, ki so bili pred ključno besedo "`$Log$`". Če se v naslednjih vrsticah pojavijo isti znaki "vodilnega komentarja", so prav tako vključeni v zgodovino.

Med vsako prijavo VCS zapiše edinstveno vrstico, ki določa podatke o različici, datumu in času, ki jim sledijo vrstice s komentarji uporabnikov. Te vrstice tvorijo en vnos zgodovine. Ta razdelek z zgodovino se poveča z vsako prijavo in najnovejši vnosi so prikazani na vrhu (za začetno vrstico zgodovine).

Ko za vzporedni razvoj dva ali več razvijalcev prijavi vejo datoteke, bo zgodovina združevanja vsebovala več vnosov, ki se med združevanjem vej prikažejo kot spori. Ker lahko njihovo združevanje postane zelo dolgočasno, &kdiff3; ponuja podporo z dvema možnima strategijama: samo vstavite podatke o zgodovini obeh sodelavcev na vrh ali razvrstite informacije o zgodovini po uporabniško določenem ključu.

Metodo samo vstavi vse vnose je lažje konfigurirati. &kdiff3; potrebuje le metodo za odkrivanje, katere vrstice pripadajo enemu vnosu v zgodovino. Večina VCS vstavi prazno vrstico za vsakim vnosom v zgodovino. Če ni drugih praznih vrstic, je to zadosten kriterij za &kdiff3;. Samo nastavite prazen regularni izraz za začetek vnosa v zgodovino pri elementu Spoji v pogovornem oknu z nastavitvami. Če kriterij prazne vrstice ne zadostuje, lahko podate regularni izraz za zaznavanje začetka vnosa v zgodovino.

Upoštevajte, da bo &kdiff3; odstranil podvojene vnose v zgodovino. Če se zgodovinski vnos pojavi večkrat v zgodovini vhodne datoteke, bo v izhodu ostal samo en vnos.

Če želite razvrstiti zgodovino, morate določiti, kako naj bo ključ za razvrščanje zgrajen. Uporabite oklepaje v Začetek regularnega izraza v zgodovini pri elementu Spoji v pogovornem oknu z nastavitvami, da združite dele regularnega izraza, ki naj se pozneje uporabijo za ključ za razvrščanje. Nato določite možnost Začetek vrstnega reda razvrščanja vnosa v zgodovino z navedbo z vejico "," ločenega seznama številk, ki se nanašajo na položaj skupine v regularnem izrazu.

Ker tega ni tako enostavno narediti takoj, lahko preizkusite in izboljšate regularne izraze in generiranje ključev v namenskem pogovornem oknu s pritiskom na gumb Preizkusite svoje regularne izraze.

Primer: Predpostavimo, da je zgodovina videti takole:

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

Začetna vrstica zgodovine se ujema z regularnim izrazom "`.*\$Log.*\$.*`". Nato sledi vnosom v zgodovino.

Vrstica s ključno besedo »`$Log$`« se začne z dvema »*«, ki jima sledi presledek. &kdiff3; uporablja prvi niz brez presledka kot "uvodni komentar" in predpostavlja, da se zgodovina konča v prvi vrstici brez tega uvodnega komentarja. V tem primeru se zadnja vrstica konča z nizom, ki se prav tako začne z dvema "*", vendar namesto presledka sledi več "*". Zato ta vrstica konča zgodovino.

Če razvrščanje zgodovine ni potrebno, bi lahko regularni izraz začetne vrstice vnosa zgodovine izgledal takole. (Ta vrstica je razdeljena na dva dela, ker drugače ne bi ustrezala.)

    \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+.*

Za podrobnosti o regularnih izrazih glejte dokumentacijo o regularnih izrazih. Upoštevajte, da se "`\s`" (z malimi črkami "`s`") ujema s katerim koli presledkom in "`\S`" (z velikimi črkami "`S`") se ujema s katerim koli ne-belim prostorom. V našem primeru začetek vnosa zgodovine vsebuje najprej informacije o različici z reg. exp. "`\\main\\\S+`, datum, sestavljen iz dneva "`[0-9]+`", meseca "`(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`" in leto "`[0-9][0-9][0-9][ 0-9]`", čas "`[0-9][0-9]:[0-9][0-9]:[0-9][0-9]`" in končno prijavno ime razvijalca "`.*`".

Upoštevajte, da bodo znaki "uvodnega komentarja" (v primeru "`**`") že odstranjeni s &kdiff3; pred poskusom ujemanja, se zato regularni izraz začne z ujemanjem za nobenega ali več znakov belega prostora"`\s*`". Ker se znaki komentarjev lahko razlikujejo v vsaki datoteki (⪚ C/C++ uporablja druge znake komentarjev kot skript Perl), &kdiff3; skrbi za glavne znake komentarjev in jih ne bi smeli podajati v regularnem izrazu.

Če potrebujete urejeno zgodovino. Nato je treba izračunati sortkey. Za to morajo biti ustrezni deli v regularnem izrazu združeni v oklepaje. (Dodatni oklepaji lahko tudi ostanejo, če je razvrščanje zgodovine onemogočeno.)

    \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+(.*)

Oklepaji zdaj vsebujejo `1`. informacije o različici, `2`. dan, `3`. mesec, `4`. leto, `5`. čas, `6`. ime. Če pa želimo razvrščati po datumu in času, moramo sestaviti ključ z elementi v drugačnem vrstnem redu: najprej leto, sledijo mesec, dan, čas, informacije o različici in ime. Zato je vrstni red ključev za razvrščanje, ki ga je treba določiti, "`4,3,2,5,1,6`".

Ker imena mesecev niso dobra za razvrščanje ("`Apr`" bi bil prvi) &kdiff3; zazna, v katerem vrstnem redu so bila navedena imena mesecev, in namesto tega uporabi to številko ("`Apr`" -> "`04`"). In če je najdeno čisto število, bo pretvorjeno v 4-mestno vrednost z začetnimi ničlami za razvrščanje. Končno bo dobljeni ključ za razvrščanje za prvo začetno vrstico vnosa v zgodovino:

    2001 04 0002 10:45:41 integracija_veja_12 tom

Za več informacij glejte tudi razdelek Nastavitve združevanja.

### Navigacija in urejanje

Večino navigacije boste opravili z drsniki in miško, vendar lahko krmarite tudi s tipkami. Če kliknete katero koli okno, lahko uporabite bližnjice &Left;, &Right;, &Up;, &Down;, &PgUp;, &PgDn;, &Home;, &End;, &Ctrl;&Home; in &Ctrl;&End; kot bi v drugih programih. Pregledni stolpec polegnavpičnega drsnika vhodnih datotek lahko uporabite tudi za navigacijo s klikom vanjo.

Uporabite lahko tudi kolesce miške za pomikanje navzgor in navzdol.

V urejevalniku spajanja izhodov lahko za urejanje uporabite tudi druge tipke. Lahko preklapljate med načinoma vstavljanja in prepisovanja s tipko &Ins;. (Privzete jenačin vstavljanja.)

Klik z &LMB; v kateri koli stolpec povzetka bo sinhroniziral vsa oknaza prikaz začetka iste skupine vrstic (kot je razloženo v razdelkuNastavitev trenutne skupine insinhroniziranje položaja pogleda združevanja in razlikovanja).​

Vrstica z gumbi vsebuje tudi devet navigacijskih gumbov, s katerimi lahko skačetena trenutno/prvo/zadnjo razliko, na prejšnjo/naslednjo razliko (&Ctrl;&Down;/&Ctrl;&Up;), naprejšnji/naslednji konflikt (&Ctrl;&PgDn;/&Ctrl;&PgUp;) ali prejšnji/naslednji nerešen konflikt. Upoštevajte, da za &kdiff3; "konflikt", ki ni bil samodejno rešen na začetku spajanja, ostane "konflikt", tudi če je rešen. Zato je potreba po razlikovanju "nerešenih konfliktov".

#### Samodejno napredovanje

Obstaja tudi gumb Samodejno pojdi na naslednji nerešeni spor po izbiri vira (Samodejno napredovanje). Če to omogočite, potem ko je izbran en vir, &kdiff3; samodejno skoči na in izbere naslednji nerešen konflikt. To lahko pomaga, ko želite vedno izbrati samo en vir. Ko potrebujete oba vira ali želite urediti po izbiri, boste to verjetno želeli izklopiti. Preden nadaljujete do naslednjega nerešenega spora &kdiff3; vam za kratek čas pokaže učinek vaše izbire. Ta zakasnitev je nastavljiva v elementu Združi v pogovornem oknu z nastavitvami: Določite lahko Zakasnitev samodejnega napredovanja (ms): v milisekundah med 0 in 2000. Namig: Utrujen od veliko klikov? - Uporabite majhen zamik samodejnega napredovanja in bližnjice &Ctrl;1/2/3, da izberete A/B/C za številne konflikte.

### Izberi, kopiraj in prilepi

Okna za vnos ne prikazujejo kazalca, zato je treba izbire opraviti z miško s klikom z &RMB; na začetku, držite tipko miške in se pomaknite do konca, kjer znova spustite tipko miške. Besedo lahko izberete tudi tako, da jo dvakrat kliknete. V urejevalniku spajanja izpisov lahko izberete tudi prek tipkovnice tako, da držite &Shift; in navigacijo s smernimi tipkami.

Če izbor presega vidni obseg, lahko premaknete miško čez meje okna, kar povzroči &kdiff3; da se pomakne v to smer.

Za zelo velike izbire lahko uporabite tudi navigacijske tipke, medtem ko držite miško. Npr. uporabite &PgUp; in &PgDn; za hiter prehod na določen položaj. Na končnem položaju spustite gumb miške.

Če želite izbrati vse v trenutnem oknu, uporabite menijski element Uredi Izberi vse (&Ctrl;A ).

Za kopiranje v odložišče morate pritisniti gumb Kopiraj (&Ctrl;C ali &Ctrl;&Ins;). Obstaja pa možnost Izbira samodejnega kopiranja pri elementu Urejevalnik v pogovornem oknu z nastavitvami. Če je to omogočeno, se vse, kar izberete, takoj kopira in vam ni treba izrecno kopirati. Toda pri uporabi bodite pozorni, ker se lahko vsebina odložišča po nesreči uniči.

Izreži (&Ctrl;X ali &Shift;∇) kopira v odložišče in izbriše izbrano besedilo.

Prilepi (&Ctrl;V ali &Shift;&Ins;) vstavi besedilo v odložišče na položaj kazalca ali čez trenutni izbor. Če prilepite v katero koli okno za vnos razlike, bo vsebina odložišča prikazana v tem oknu in primerjava se bo takoj znova začela. To je uporabno, če želite od nekje hitro zagrabiti del besedila in ga primerjati z nečim drugim, ne da bi prej ustvarili datoteke.

### Shranjevanje

Shranjevanje bo dovoljeno šele, ko bodo rešeni vsi konflikti. Če datoteka že obstaja in je možnost Varnostne kopije datotek omogočena pri elementu Mapa v pogovornem oknu z nastavitvami, bo obstoječa datoteka preimenovana s `pripono .orig`, če pa takšna datoteka obstaja, bo izbrisana. Ko zaprete ali začnete drugo diff-analizo in podatki še niso bili shranjeni, potem vas bo &kdiff3; vprašal, ali želite shraniti, preklicati ali nadaljevati brez shranjevanja. (&kdiff3; ne lovi nobenih signalov. Torej, če "ubijete" pojavek &kdiff3;, bodo vaši podatki izgubljeni.)

Konci vrstic se shranijo v skladu z običajno metodo v osnovnem operacijskem sistemu. Za Unixe se vsaka vrstica konča z znakom za začetek vrstice "`\n`", medtem ko se pri sistemih, ki temeljijo na Win32, vsaka vrstica konča s povratnim znakom + znak za začetek vrstice "`\r\n`". &kdiff3; ne ohrani končnic vrstic vhodnih datotek, kar tudi pomeni, da ne smete uporabljati &kdiff3; z binarnimi datotekami.

### Iskanje nizov

Niz lahko iščete v katerem koli besedilnem oknu &kdiff3;. Element menija Uredi Najdi... (&Ctrl;F) pogovorno okno, v katerem lahko določite niz za iskanje. Izberete lahko tudi okna, ki jih želite preiskati. Iskanje se vedno začne na vrhu. Uporabite element menija Uredi Najdi naprej ... (F3), da nadaljujete do naslednjega pojava. Če izberete iskanje po več oknih, bo prvo okno preiskano od vrha do dna, preden se bo iskanje spet začelo v naslednjem oknu na vrhu &etc;

### Tiskanje

&kdiff3; podpira tiskanje za razlike besedilnih datotek. Element menija Datoteka Natisni... (&Ctrl;P) odpre pogovorno okno, v katerem lahko izberete tiskalnik in prilagodite druge možnosti.

Obstaja več možnosti za prilagajanje obsega. Zaradi različnih pogovornih oken za tiskanje v različnih operacijskih sistemih se način doseganja določenih izbir obsega razlikuje.

Vse:

- Natisni vse.

Trenutno:

- Natisni stran, ki se začne pri prvi vidni vrstici v oknu. (V sistemih brez te možnosti je to mogoče doseči z določitvijo številke strani 10000 za tiskanje.)

Izbira:

- Preden se odločite za tiskanje, izberite besedilo z miško (kot pri kopiranju in lepljenju) v enem od oken za vnos razlike, da določite začetno in končno vrstico. Če v enem od oken za vnos razlike ni bilo izbrano nobeno besedilo, potem to ne bo na voljo. (V sistemih brez te možnosti je to mogoče doseči z določitvijo številke strani 9999 za tiskanje.)

Obseg:

- Določite prvo in zadnjo stran.

Druge pomembne možnosti za tiskanje bodo vzete iz običajnih možnosti:

- Pisava, velikost pisave

- Pokaži številke vrstic

- Prelom besed

- Barve

- &etc;

Za tiskanje je priporočljivo tudi ležeče oblikovanje.

### Možnosti

Možnosti in seznam nedavnih datotek bodo shranjeni, ko zapustite program, in znova naloženi, ko ga zaženete. (Nastavitve Konfiguriraj &kdiff3;... menijski element).

#### Pisava

Izberite pisavo s fiksno širino. (V nekaterih sistemih bo to pogovorno okno predstavilo tudi pisave spremenljive širine, vendar jih ne smete uporabljati.)

#### Barve

Pogled urejevalnika in razlike:

- Barva ospredja:

- Ponavadi črna.

Barva ozadja:

- Ponavadi bela.

Različna barva ozadja:

- Ponavadi svetlo siva.

Barva A:

- Ponavadi temno modra.

Barva B:

- Ponavadi temno zelena.

Barva C:

- Ponavadi temna magenta.

Barva spora:

- Običajno rdeče.

Barva ozadja trenutnega obsega:

- Ponavadi svetlo rumena.

Barva ozadja razlike v trenutnem območju:

- Običajno temno rumena.

Barva za ročno poravnane razpone razlik:

- Običajno oranžna.

Primerjalni pogled mape:

- Najnovejša barva datoteke:

- Običajno zelena.

Barva najstarejše datoteke:

- Običajno rdeče.

Barva datoteke srednjih let:

- Običajno močno rumena.

Barva za manjkajoče datoteke:

- Ponavadi črna.

Spreminjanje barv za primerjavo map bo učinkovito šele ob začetku naslednje primerjave map.

Pri sistemih s samo 16 ali 256 barvami nekatere barve niso na voljo v čisti obliki. V takih sistemih bo gumb Privzeto izbral čisto barvo.

#### Nastavitve urejevalnika

Tab vstavi presledke

- Če je to onemogočeno in pritisnete tipko, se vstavi tabulator, sicer pa ustrezno število znakov.

Velikost tabulatorja:

- Lahko se prilagodi vašim posebnim potrebam. Privzeto je `8`.

Samodejno zamikanje

- Ko pritisnete &Enter; ali Return se za novo vrstico uporabi zamik prejšnje vrstice.

Izbira samodejnega kopiranja

- Vsak izbor se takoj kopira v odložišče, ko je aktiven, in vam ga ni treba izrecno kopirati.

Slog konca vrstice:

- Pri shranjevanju lahko izberete želeni slog konca črte. Privzeta nastavitev je običajna izbira za uporabljeni operacijski sistem.

#### Diff Settings

Pri primerjavi datotek &kdiff3; najprej poskuša ujemati vrstice, ki so enake v vseh vhodnih datotekah. Samo med tem korakom lahko prezre prazen prostor. Drugi korak primerja vsako vrstico. V tem koraku prazen prostor ne bo prezrt. Tudi med združevanjem prazen prostor ne bo prezrt.

Ignoriraj številke (obravnavaj kot presledek)

- Privzeto je izklopljeno. Številski znaki ('0'-'9', '.', '-') bodo prezrti v prvem delu analize, v katerem se izvede ujemanje vrstic. V rezultatu bodo razlike kljub temu prikazane, vendar se obravnavajo kot prazen prostor.

Prezri komentarje C/C++ (obravnavaj kot prazen prostor)

- Privzeto je izklopljeno. Spremembe komentarjev bodo obravnavane kot spremembe praznega prostora.

Ignoriraj velike in male črke (obravnavaj kot beli prostor)

- Privzeto je izklopljeno. Razlike med velikimi in malimi črkami (kot je 'A' proti 'a') bodo obravnavane kot spremembe v belem prostoru.

Ukaz predprocesorja:

- Glejte naslednji razdelek.

Ukaz predprocesorja za ujemanje vrstic:

- Glejte naslednji razdelek.

Potrudi se (počasneje)

- Poskusite najti še manjšo delto. (Privzeto je vklopljeno.) To bo verjetno učinkovito za zapletene in velike datoteke. In počasno za zelo velike datoteke.

Poravnajte B in C za 3 vhodne datoteke

- Poskusite poravnati B in C, ko primerjate ali združujete tri vhodne datoteke. Ni priporočljivo za združevanje, ker je združevanje lahko bolj zapleteno. (Privzeto je izklopljeno.)

#### Nastavitve združevanja

Zakasnitev samodejnega napredovanja (ms):

- Ko je v načinu samodejnega napredovanja, ta nastavitev določa, kako dolgo naj bo prikazan rezultat izbire, preden skoči na naslednji nerešen konflikt.

Prikaži pogovorna okna z informacijami

- Prikaži pogovorno okno z informacijami o številu sporov.

Privzeto združevanje datotek praznega prostora 2/3:

- Samodejno reši vse konflikte praznega prostora z izbiro navedene datoteke. (Privzeta je ročna izbira.) Uporabno, če prazen prostor v mnogih datotekah res ni pomemben. Če to potrebujete le občasno, bolje uporabite Izberi A/B/C za vse nerešene spore belega prostora v meniju Združi. Upoštevajte, da če omogočite Prezri številke (obravnavaj kot presledek) ali Prezri komentarje C/C++ (obravnavaj kot presledek), potem ta samodejna izbira velja tudi za spore v številke ali komentarje.

Samodejno združevanje regularnega izraza:

- Regularni izraz za vrstice, kjer &kdiff3; mora samodejno izbrati en vir. Glejte tudi Samodejno združevanje....

Zaženi samodejno združevanje regularnih izrazov ob začetku združevanja

- Če je aktivirano &kdiff3; zažene samodejno spajanje z možnostjo Regularni izraz samodejnega združevanja:, ko se združevanje začne.

Začetek vnosa v zgodovino regularnega izraza

- Regularni izraz za začetek vnosa v zgodovino združevanja. Običajno ta vrstica vsebuje ključno besedo "`$Log$`". Privzeta vrednost: "`.*\$Log.*\$.*`"

Začetek vnosa v zgodovino regularnega izraza

- Vnos v zgodovino spajanja je sestavljen iz več vrstic. Podajte regularni izraz za zaznavanje prve vrstice (brez uvodnega komentarja). Z oklepaji združite ključe, ki jih želite uporabiti za razvrščanje. Če ostane prazno, potem &kdiff3; predpostavlja, da prazne vrstice ločujejo vnose zgodovine. Glejte tudi Samodejno združevanje....

Razvrščanje združevanja zgodovine

- Omogoči razvrščanje zgodovine nadzora različic.

Vrstni red ključa za začetek vnosa v zgodovino:

- Vsak par oklepajev, uporabljen v regularnem izrazu za začetni vnos zgodovine, združuje ključ, ki se lahko uporablja za razvrščanje. Podajte seznam ključev (ki so oštevilčeni po vrstnem redu pojavljanja, začenši z `1`) z uporabo ',' kot ločilo (⪚ "`4,5,6,1,2,3,7` "). Če polje ostane prazno, razvrščanje ne bo izvedeno. Glejte tudi Samodejno združevanje....

Zgodovina nadzora različic združevanja ob začetku združevanja

- Če je aktivirano, &kdiff3; zažene samodejno združevanje zgodovine z uporabo zgoraj omenjenih možnosti, ko se združevanje začne.

Največje število vnosov v zgodovino:

- &kdiff3; obreže seznam zgodovine po podanem številu vnosov. Uporabite `-1`, da preprečite obrezovanje. (Privzeto je `-1`).

Preizkusite svoje regularne izraze

- Ta gumb prikaže pogovorno okno, ki vam omogoča izboljšanje in testiranje zgornjih regularnih izrazov. Preprosto kopirajte ustrezne podatke iz svojih datotek v vzorčne vrstice. Možnost Rezultat ujemanja: bo takoj pokazala, ali je ujemanje uspelo ali ne. Rezultat ključa za razvrščanje: bo prikazal ključ, uporabljen za razvrščanje zgodovine združevanja.

Nepomemben ukaz združevanja:

- Določite lasten ukaz, ki naj se kliče, ko &kdiff3; zazna, da pri združevanju treh datotek datoteka iz B ne prispeva nobenih ustreznih podatkov, ki jih že ne vsebuje datoteka iz C. Ukaz se kliče s tremi imeni datotek kot parametri. Podatki, ki se ujemajo z regularnim izrazom za samodejno združevanje ali v zgodovini, se ne štejejo za pomembne.

Samodejno shranjevanje in zapiranje ob združevanju brez sporov

- Če je bil &kdiff3; zagnan za združevanje datotek iz ukazne vrstice in vsi konflikti so rešljivi brez interakcije uporabnika, nato pa se samodejno shranijo in zaprejo. (Podobno možnosti ukazne vrstice `--auto`.)

#### Združevanje map

Te možnosti se nanašajo na prečesavanje mape in obravnavo združevanja: Za podrobnosti glejte Primerjava map/dokumentov o združevanju.

Obstaja pa ena možnost, ki je pomembna tudi za shranjevanje posameznih datotek:

Varnostne kopije datotek (.orig)

- Ko je datoteka shranjena in že obstaja starejša različica, bo prvotna različica preimenovana s pripono `.orig`. Če stara datoteka varnostne kopije s končnico `.orig` že obstaja, bo ta izbrisana brez varnostne kopije.

#### Regionalne in jezikovne možnosti

Uporabite isto kodiranje za vse

- Naslednje možnosti kodiranja je mogoče prilagoditi ločeno za vsak element ali če je ta možnost nastavljena, bodo vse vrednosti prevzele prvo vrednost.

Opomba: lokalno kodiranje je "..."

- Nad izbirniki kodekov se prikaže ta opomba, ki vam pove, kakšno je lokalno kodiranje. (To ni nastavljivo, ampak za vašo informacijo, če ne poznate svojega lokalnega kodiranja, vendar ga morate izbrati.)

Samodejno zaznavanje

- Ta možnost poskuša uporabiti BOM ali meta podatke iz dokumentov XML/HTML za zaznavanje kodiranja. Če tega ne stori, bo preveril, ali je kratek vzorec z začetka datoteke mogoče interpretirati kot UTF-8. Če je to preverjanje uspešno, bo uporabljen UTF-8. V nasprotnem primeru se bo vrnil na uporabniško izbrani kodek. Podprt je samo UTF-8 brez BOM ali metapodatkov.

Kodiranje datoteke za A/B/C:

- Prilagodite kodiranje datoteke za vhodne datoteke. To vpliva na interpretacijo posebnih znakov. Ker lahko prilagodite vsak kodek posebej, lahko celo primerjate in združite datoteke, ki so bile shranjene z uporabo različnih kodekov.

Kodiranje datoteke za spajanje in shranjevanje:

- Ko uredite datoteko, lahko prilagodite, katero kodiranje bo uporabljeno pri shranjevanju na disk.

Kodiranje datoteke za datoteke predprocesorja:

- Ko definirate predprocesorje, morda ne bodo mogli delovati na vašemkodek. (⪚: vaše datoteke so 16-bitne unicode in vaš predprocesor lahko samo vzame 8-bitni &ASCII;.) S to možnostjo lahko določite kodiranjeizhod predprocesorja.

Jezik od desne proti levi:

- Nekateri jeziki pišejo z desne proti levi. Ko je ta možnost omogočena, &kdiff3; nariše besedilo od desne proti levi v oknih za vnos razlike in v oknu za spajanje izhodov. Upoštevajte, da če zaženete &kdiff3; z možnostjo ukazne vrstice `--reverse` bo tudi vsa postavitev izvedena od desne proti levi. (To je zmožnost, ki jo ponuja &Qt;.)

  Ta dokumentacija je bila napisana ob predpostavki, da sta ta možnost ali obratna postavitev onemogočeni. Zato je treba nekatere sklice na "levo" ali "desno" nadomestiti z ustreznim primerkom, če uporabljate te možnosti.

#### Razno

(Te možnosti in dejanja so na voljo v menijih ali vrstici z gumbi.)

Možnosti pregleda:

- Te možnosti so na voljo le, če primerjate tri datoteke. V običajnem načinu so vse razlike prikazane v enem barvno kodiranem preglednem stolpcu. Toda včasih vas še posebej zanimajo razlike med samo dvema od teh treh datotek. Če izberete pregled "A proti B", "A proti C" ali "B proti C", bo prikazan drugi stolpec pregleda z zahtevanimi informacijami poleg običajnega pregleda.

Okna preloma besed razlik

- Zavihajte vrste, ko bi njihova dolžina presegla širino okna.

Pokaži okno A/B/C:

- Včasih želite bolje izkoristiti prostor na zaslonu za dolge vrste. Skrijte okna, ki niso pomembna. (V meniju oken.)

Preklopi razdeljeno usmerjenost

- Preklapljajte med okni za razlikovanje, ki so prikazana eno poleg drugega (A levo od B levo od C) ali eno nad drugim (A nad B nad C). To bi moralo pomagati tudi pri dolgih vrstah. (V meniju Okno.)

Združi trenutno datoteko

- Deluje, če primerjate samo dve datoteki. En sam klik zažene združevanje in uporabi ime zadnje vhodne datoteke kot privzeto ime izhodne datoteke. (Ko se to uporabi za ponovni zagon združevanja, bo ime izhodne datoteke ohranjeno.)

Prikaži beli prostor

- To izklopite, če želite onemogočiti označevanje sprememb samo s presledki v besedilu ali preglednih stolpcih. (Upoštevajte, da to velja tudi za spremembe v številkah ali komentarjih, če sta možnosti Prezri številke (obravnavaj kot presledek) ali Prezri komentarje C/C++ (obravnavaj kot presledek) aktivno.)

Prikaz prostora && Znaki tabulatorja

- Včasih so vidni prostori in zavihki moteči. To lahko izklopite.

Prikazuj številke vrstic

- Izberete lahko, ali naj bodo prikazane številke vrstic za vhodne datoteke.

#### Konfiguriranje bližnjic na tipkovnici

Trenutno samo &frameworks; različica podpira uporabniško nastavljive bližnjice na tipkovnici. (Meni Nastavitve Konfiguriraj bližnjice...)

### Ukazi predprocesorja

&kdiff3; podpira dve možnosti predprocesorja.

Ukaz predprocesorja:

- Ko je katera koli datoteka prebrana, bo posredovana skozi ta zunanji ukaz. Izhod tega ukaza bo viden namesto izvirne datoteke. Napišete lahko svoj predprocesor, ki bo ustrezal vašim posebnim potrebam. Uporabite to, da odrežete moteče dele datoteke ali samodejno popravite zamik &etc;

Ukaz predprocesorja za ujemanje vrstic:

- Ko je katera koli datoteka prebrana, bo posredovana skozi ta zunanji ukaz. Če je podan tudi ukaz predprocesorja (glejte zgoraj), je izhod predprocesorja vhod predprocesorja za ujemanje vrstic. Izhod bo uporabljen le med fazo analize ujemanja vrstic. Napišete lahko svoj predprocesor, ki bo ustrezal vašim posebnim potrebam. Vsaka vhodna vrstica mora imeti ustrezno izhodno vrstico.

Ideja je omogočiti uporabniku večjo prilagodljivost med konfiguriranjem rezultata razlik. Toda to zahteva zunanji program in mnogi uporabniki ga ne želijo napisati sami. Dobra novica je, da zelo pogosto `sed` ali `perl` opravita to delo.

Primer: Preprost testni primer: Razmislite o datoteki a.txt (6 vrstic):

    aa
          ba
          ca
          da
          ea
          fa

In datoteka b.txt (3 vrstice):

    cg
          dg
          eg

Brez predprocesorja bi bile naslednje vrstice postavljene ena poleg druge:

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

To verjetno ni zaželeno, saj je v prvi črki dejansko zanimiv podatek. Da algoritmu za ujemanje pomagamo prezreti drugo črko, lahko uporabimo ukaz predprocesorja za ujemanje vrstic, ki nadomesti 'g' z 'a':

    sed 's/g/a/'

S tem ukazom bi bil rezultat primerjave:

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

Notranji algoritem za ujemanje vidi datoteke po zagonu predprocesorja za ujemanje vrstic, toda na zaslonu je datoteka nespremenjena. (Običajni predprocesor bi spremenil podatke tudi na zaslonu.)

#### `sed` Osnove

Ta razdelek predstavlja le nekaj zelo osnovnih funkcij `sed`. Za več informacij glejte info:/sed ali https://www.gnu.org/software/sed/manual/html_mono/sed.html. Vnaprej prevedena različica za &Windows; najdete na http://unxutils.sourceforge.net. Upoštevajte, da naslednji primeri predpostavljajo, da je ukaz `sed` v neki mapi v spremenljivki okolja `PATH`. Če temu ni tako, morate podati celotno absolutno pot za ukaz.

V tem kontekstu se uporablja samo nadomestni ukaz `sed`:

    sed 's/REGEXP/REPLACEMENT/FLAGS'

Preden uporabite nov ukaz znotraj &kdiff3;, ga najprej preizkusite v konzoli. Tukaj je uporaben ukaz `echo`. Primer:

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

Ta primer prikazuje zelo preprost ukaz sed, ki zamenja prvo pojavitev "a" z "o". Če želite zamenjati vse pojavitve, potem potrebujete zastavico "g":

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

Simbol "|" je cevni ukaz, ki prenese izhod prejšnjega ukaza na vhod naslednjega ukaza. Če želite preizkusiti z daljšo datoteko, lahko uporabite `cat` na sistemu &UNIX; ali `type` v sistemu &Windows;. `sed` bo izvedel zamenjavo za vsako vrstico.

    cat imedatoteke | sed možnosti

#### Primeri uporabe `sed` v &kdiff3;

##### Ignoriranje drugih vrst komentarjev

Trenutno &kdiff3; razume le komentarje C/C++. Z možnostjo Ukaz predprocesorja za ujemanje vrstic: lahko tudi prezrete druge vrste komentarjev, tako da jih pretvorite v komentarje C/C++.

Primer: Če želite prezreti komentarje, ki se začnejo z "`#`", jih želite pretvoriti v "`//`". Upoštevajte, da morate za učinek omogočiti tudi možnost Prezri komentarje C/C++ (obravnavaj kot presledek). Ustrezen Ukaz predprocesorja za ujemanje vrstic: bi bil:

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

Ker ima za `sed` znak "`/`" poseben pomen, je treba znak "`\`" postaviti pred vsak "`/`" v nadomestnem nizu. Včasih je "`\`" potreben za dodajanje ali odstranjevanje posebnega pomena določenih znakov. Enojni narekovaji (') so pomembni samo pri testiranju na ukazni lupini, saj bo drugače poskušala obdelati nekatere znake. &kdiff3; tega ne naredi, razen za ubežna zaporedja '`\"`' in '`\\`'.

##### Razlika pri razlikovanju velikih/malih črk

Uporabite naslednji ukaz predprocesorja za ujemanje vrstic: za pretvorbo vseh vnosov v velike črke:

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

Tu je "`.*`" regularni izraz, ki se ujema s katerim koli nizom in se v tem kontekstu ujema z vsemi znaki v vrstici. "`\1`" v nadomestnem nizu se nanaša na ujemajoče se besedilo v prvem paru "`\(`" and "`\)`". "`\U`" pretvori vstavljeno besedilo v velike črke.

##### Ignoriranje ključnih besed za nadzor različic

CVS in drugi sistemi za nadzor različic uporabljajo več ključnih besed za vstavljanje samodejno ustvarjenih nizov (info:/cvs/Keyword substitution). Vsi sledijo vzorcu "`$KEYWORD generirano besedilo$`". Zdaj potrebujemo ukaz predprocesorja za ujemanje vrstic, ki odstrani samo generirano besedilo:

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

"`\|`" ločuje možne ključne besede. Ta seznam boste morda želeli spremeniti glede na svoje potrebe. "`\`" pred "`$`" je potreben, ker se drugače "`$`" ujema s koncem vrstice.

Med eksperimentiranjem z `sed` boste morda razumeli in vam bodo celo všeč ti regularni izrazi. Uporabni so, ker obstaja veliko drugih programov, ki prav tako podpirajo podobne stvari.

##### Ignoriranje številk

Ignoriranje številk je pravzaprav vgrajena možnost. Toda kot drug primer, takole bi bil videti ukaz predprocesorja za ujemanje vrstic.

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

Vsak znak znotraj '`[`' in '`]`' se ujema in ne bo zamenjan z ničemer.

##### Ignoriranje določenih stolpcev

Včasih je besedilo zelo strogo oblikovano in vsebuje stolpce, ki jih želite vedno prezreti, medtem ko obstajajo drugi stolpci, ki jih želite ohraniti za analizo. V naslednjem primeru je prvih pet stolpcev (znakov) prezrtih, naslednjih deset stolpcev je ohranjenih, nato je spet pet stolpcev prezrtih in preostala vrstica je ohranjena.

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

Vsaka pika '`.`' se ujema s katerim koli posameznim znakom. "`\1`" in "`\2`" v nadomestnem nizu se nanašata na ujemajoče se besedilo znotraj prvega in drugega para "`\(`" in "`\)`", ki označujeta besedilo, ki ga je treba ohraniti.

##### Kombinacija več zamenjav

Včasih želite uporabiti več zamenjav hkrati. Nato jih lahko ločite med seboj s podpičjem '`;`'. Primer:

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

##### Uporaba `perl` namesto `sed`

Namesto `sed` boste morda želeli uporabiti nekaj drugega, kot je `perl`.

    perl -p -e 's/REGEXP/REPLACEMENT/FLAGS'

Toda nekatere podrobnosti so drugačne v `perl`. Upoštevajte, da kjer `sed` potrebuje "`\(`" in "`\)`", `perl` zahteva enostavnejši "`(`" in "`)`" brez '`\`'. Primer:

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

#### Vrstni red izvajanja predprocesorja

Podatki se prenašajo skozi vse notranje in zunanje predprocesorje v naslednjem vrstnem redu:

- Običajni predprocesor,

- Predprocesor za ujemanje vrstic,

- Ignoriraj velike črke (obravnavaj kot presledek) (pretvorba v velike črke),

- Zaznavanje komentarjev C/C++,

- Ignoriraj številke (obravnavaj kot beli prostor),

- Ignoriraj beli prostor

Podatki po običajnem predprocesorju bodo ohranjeni za prikaz in združevanje. Druge operacije spreminjajo le podatke, ki jih vidi algoritem za ujemanje razlik med vrsticami.

V redkih primerih, ko uporabljate običajni predprocesor, upoštevajte, da predprocesor za ujemanje vrstic vidi izhod običajnega predprocesorja kot vhod.

#### Opozorilo

Ukazi predprocesorja so pogosto zelo uporabni, a kot pri vsaki možnosti, ki spremeni vaša besedila ali samodejno skrije določene razlike, lahko pomotoma spregledate določene razlike in v najslabšem primeru uničite pomembne podatke.

Iz tega razloga med združevanjem, če se uporablja običajen predprocesorski ukaz, vam bo &kdiff3; to povedal in vas vprašal, ali naj bo onemogočeno ali ne. Vendar vas ne bo opozoril, če je aktivna možnost Ukaz predprocesorja za ujemanje vrstic:. Združevanje se ne bo dokončalo, dokler niso razrešeni vsi spori. Če ste onemogočili menijski element Diffview Pokaži prazen prostor, bodo razlike, ki so bile odstranjene z ukazom predprocesorja za ujemanje vrstic: možnost bo prav tako nevidna. Če gumb Shrani ostane onemogočen med združevanjem (zaradi preostalih sporov), se prepričajte, da ste omogočili elelent menija Diffview Pokaži prazen prostor. Če teh manj pomembnih razlik ne želite združiti ročno, lahko izberete Združi Izberi [A|B|C] za vse nerešene spore presledkov element menija.

## Primerjava map in združevanje s &kdiff3;

### Uvod v primerjavo in združevanje map

Programerji morajo pogosto spremeniti veliko datotek v mapi, da dosežejo svoj namen. Za ta &kdiff3; omogoča tudi primerjavo in rekurzivno združevanje celotnih map!

Čeprav se zdi, da sta primerjava in združevanje map povsem očitna, morate vedeti več podrobnosti. Najpomembnejše je seveda dejstvo, da zdaj lahko vsaka operacija vpliva na veliko datotek. Če nimate varnostne kopije izvirnih podatkov, se je lahko zelo težko ali celo nemogoče vrniti v prvotno stanje. Zato se pred začetkom združevanja prepričajte, da so vaši podatki varni in da je vrnitev možna. Ali boste naredili arhiv ali uporabili kakšen sistem za nadzor različic, je vaša odločitev, a tudi izkušeni programerji in integratorji tu in tam potrebujejo stare vire. In upoštevajte, da čeprav se jaz (avtor &kdiff3;) trudim po svojih najboljših močeh, ne morem zagotoviti, da ne bo nobenih napak. Glede na &GNU; GPL za ta program NI nikakršnega JAMSTVA. Zato bodite ponižni in vedno imejte v mislih:

> Motiti se je človeško, a če želite stvari zares zamočiti, potrebujete računalnik.

In to lahko naredi ta program za vas: &kdiff3; ...

- ... rekurzivno bere in primerja dve ali tri mape,

- ... še posebej skrbi za simbolne povezave,

- ... vam omogoča brskanje po datotekah z dvojnim klikom miške,

- ... za vsak element predlaga operacijo združevanja, ki jo lahko spremenite pred začetkom združevanja map,

- ... vam omogoča simulacijo združevanja in navede dejanja, ki bi se zgodila, ne da bi jih dejansko izvedli,

- ... vam omogoča resnično združevanje in vam omogoča interakcijo, kadar koli je potrebna ročna interakcija,

- ... omogoča zagon izbrane operacije za vse elemente (tipka F7) ali izbrani element (tipka F6),

- ... omogoča nadaljevanje združevanja po ročni interakciji s tipko F7,

- ... po želji ustvari varnostne kopije z razširitvijo `.orig`,

- ...

### Začetek primerjave ali spajanja map

To je zelo podobno spajanju in primerjavi posamezne datoteke. Določiti morate samo mape v ukazni vrstici ali v pogovornem oknu za odpiranje datoteke.

#### Primerjaj/združi dve mapi:

    kdiff3 mapa1 mapa2 kdiff3 mapa1 mapa2 -o destdir

Če ciljna mapa ni navedena, potem &kdiff3; bo uporabil `mapo2`.

#### Primerjaj/združi tri mape:

    kdiff3 mapa1 folder2 folder3
    kdiff3 folder1 folder2 folder3 -o destdir

Ko se združijo tri mape, se kot osnova za združevanje uporabi `mapa1`. Če ciljna mapa ni navedena, potem bo &kdiff3; kot ciljno mapo za združevanje uporabil `mapo3`.

Upoštevajte, da se samodejno začne samo primerjava, ne pa tudi združevanje. Za to morate najprej izbrati vnos v meniju ali tipko F7. (Več podrobnosti pozneje.)

### Vidne informacije o združevanju map

Med branjem map se prikaže okno s sporočilom, ki vas obvešča o napredku. Če prekinete pregled mape, bodo prikazane samo datoteke, ki so bile do takrat primerjane.

Ko je pregled mape končan, &kdiff3; bo prikazalo seznamsko polje z rezultati na levi, ...

... in podrobnosti o trenutno izbranem artiklu na desni:

#### Stolpec z imenom

Vsaka datoteka in mapa, ki je bila najdena med prečesavanjem, je prikazana tukaj v drevesu. Predmet lahko izberete tako, da ga enkrat kliknete z miško.

Mape so privzeto strnjene. Lahko jih razširite in strnete s klikom na "+"/"-" ali z dvojnim klikom na element ali z uporabo smerne tipke &Left;/&Right;. Meni Mapa vsebuje tudi dve dejanji Zloži vse podmape in Razgrni vse podmape, s katerima lahko strnete ali razširite vse mape hkrati.

Če dvokliknete element datoteke, se začne primerjava datotek in prikaže se okno razlik datotek.

Slika v stolpcu z imenom odraža vrsto datoteke v prvi mapi (A). Lahko je eno od teh:

- Normalna datoteka

- Običajna mapa (slika mape)

- Povezava do datoteke (slika datoteke s puščico povezave)

- Povezava do mape (slika mape s puščico povezave)

Če je vrsta datoteke v drugih mapah drugačna, je to vidno v stolpcih A/B/C in v oknu, ki prikazuje podrobnosti o izbranem predmetu. Upoštevajte, da v tem primeru ni mogoče samodejno izbrati operacije združevanja. Ob začetku spajanja bo uporabnik obveščen o tovrstnih težavah.

#### Stolpci A/B/C in barvna shema

Kot lahko vidite na zgornji sliki, so v stolpcih A/B/C uporabljene barve rdeča, zelena, rumena in črna.

- Črna: ta element ne obstaja v tej mapi.

- Zelena: najnovejši predmet.

- Rumena: Starejša od zelene, novejše od rdeče.

- Rdeča: Najstarejši predmet.

Toda pri predmetih, ki so bili v primerjavi enaki, je tudi njihova barva enaka, tudi če starost ni enaka.

Mape veljajo za enake, če so vsi elementi, ki jih vsebujejo, enaki. Potem bodo tudi enake barve. Toda starost mape se ne upošteva pri njeni barvi.

Na idejo za to barvno shemo sem naletel v `dirdiff` ukazu. Barve so podobne barvam lista, ki je zelen, ko je nov, postane kasneje rumen in rdeč, ko je star.

#### Stolpec operacij

Po primerjavi map &kdiff3; oceni tudi predlog združitve. To je prikazano v stolpcu Operacija. Operacijo lahko spremenite s klikom na operacijo, ki jo želite spremeniti. Odpre se majhen meni, v katerem lahko izberete operacijo za ta element. (Najbolj potrebne operacije lahko izberete tudi s tipkovnico. &Ctrl;1/2/3/4/∇ bo izbral A/B/C/Združi/ Izbriši, če je na voljo.) Ta operacija bo izvedena med združevanjem. Katere operacije so na voljo, je odvisno od predmeta in načina združevanja, v katerem ste. Način združevanja je le en izmed

- Spajanje treh map (A se obravnava kot starejša osnova obeh).

- Spajanje dveh map.

- Način sinhronizacije dveh map (aktivirajte prek možnosti Sinhroniziraj mape).

Pri spajanju treh map bo predlog operacije: Če za element...

- .. vse tri mape so enake: Kopiraj iz C

- ... A in C sta enaka, vendar B ni: Kopiraj iz B (ali če B ne obstaja, izbriši cilj, če obstaja)

- ... A in B sta enaka, C pa ni: Kopiraj iz C (ali če C ne obstaja, izbriši cilj, če obstaja)

- ... B in C sta enaka, vendar A ni: Kopiraj iz C (ali če C ne obstaja, izbriši cilj, če obstaja)

- ... obstaja samo A: Izbriši cilj (če obstaja)

- ... obstaja samo B: Kopiraj iz B

- ... obstaja samo C: Kopiraj iz C

- ... A, B in C niso enaki: Združi

- ... A, B in C nimajo iste vrste datoteke (⪚ A je mapa, B je datoteka): "Napaka: Vrste datotek v nasprotju". Medtem ko taki elementi obstajajo, se združevanje map ne more začeti.

Pri spajanju dveh map bo predlog operacije: Če za element ...

- ... obe mapi sta enaki: Kopiraj iz B

- ... A obstaja, vendar ne B: Kopiraj iz A

- ... B obstaja, vendar ne A: Kopiraj iz B

- ... A in B obstajata, vendar nista enaka: Spoji

- ... A in B nimata iste vrste datoteke (⪚ A je mapa, B > je datoteka): "Napaka: Vrste datotek v nasprotju". Medtem ko taki elementi obstajajo, se združevanje map ne more začeti.

Način sinhronizacije je aktiven, če sta bili podani samo dve mapi in noben izrecni cilj in če je aktivna možnost Sinhroniziraj mape. &kdiff3; nato izbere privzeto operacijo, tako da sta pozneje obe mapi enaki. Če za artikel ...

- ... obe mapi sta enakovredni: Ne bo narejeno ničesar.

- ... A obstaja, vendar ne B: Kopiraj A v B

- ... B obstaja, vendar ne A: Kopiraj B v A

- ... A in B obstajata, vendar nista enaka: Spoji in shrani rezultat v obe mapi. (Za uporabnika je vidno ime shranjevalne datoteke B, potem pa &kdiff3; prekopira B tudi v A.)

- ... A in B nimata iste vrste datoteke (⪚ A je mapa, B > je datoteka): "Napaka: Vrste datotek v nasprotju". Medtem ko taki elementi obstajajo, se združevanje map ne more začeti.

Ko sta dve mapi združeni in je izbrana možnost Kopiraj novejše namesto združevanja (nevarno), potem &kdiff3; pogleda datume in predlaga izbiro novejše datoteke. Če datoteke niso enake, vendar imajo enake datume, bo operacija vsebovala "Napaka: Datumi so enaki, datoteke pa ne." Medtem ko taki elementi obstajajo, se združevanje map ne more začeti.

#### Stolpec stanja

Med združevanjem bodo obdelane ena datoteka za drugo. V stolpcu stanja bo prikazano Končano za elemente, pri katerih je bila operacija združevanja uspešna, in druga besedila, če se zgodi kaj nepričakovanega. Ko je združevanje končano, morate opraviti zadnji pregled, da vidite, ali je stanje za vse elemente sprejemljivo.

#### Statistični stolpci

Ko je v možnostih omogočen način primerjave datotek Popolna analiza, &kdiff3; bodo prikazani dodatni stolpci s številom nerešenih, rešenih, nebelih in belo prostornih sporov. (Stolpec Rešeno bo prikazan samo pri primerjavi ali združevanju treh map.)

#### Izbira navedenih datotek

Več možnosti vpliva na to, katere datoteke so tukaj navedene. Nekateri so dostopni v pogovornem oknu z nastavitvami. Meni Mapa vsebuje vnose:

- Pokaži enake datoteke: Datoteke, ki so bile zaznane kot enake v vseh vhodnih mapah.

- Pokaži različne datoteke: Datoteke, ki obstajajo v dveh ali več mapah, vendar niso enake.

- Prikaži datoteke samo v A: datoteke, ki obstajajo samo v A, ne pa tudi v B ali C.

- Prikaži datoteke samo v B: datoteke, ki obstajajo samo v B, ne pa tudi v A ali C.

- Prikaži datoteke samo v C: datoteke, ki obstajajo samo v C, ne pa tudi v A ali B.

Aktivirajte samo možnosti Pokaži za elemente, ki jih želite na seznamu. Če na primer želite navesti samo vse elemente, ki obstajajo v A ali v B, vendar ne v obeh, boste morali aktivirati Prikaži datoteke samo v A in Pokaži datoteke samo v B in deaktiviraj vse druge (Pokaži enake datoteke, Pokaži različne datoteke, Pokaži datoteke samo v C). Seznam bo takoj posodobljen, da bo odražal spremembo.

Te možnosti veljajo tudi za mape z eno izjemo: Če onemogočite Pokaži različne datoteke, ne boste skrili nobene celotne mape. To bo delovalo samo za datoteke znotraj.

Upoštevajte, da je od teh samo možnost Pokaži enake datoteke obstojna. Drugi so omogočeni ob zagonu &kdiff3;.

### Izvajanje združevanja map

Združujete lahko trenutno izbrani element (datoteko ali mapo) ali vse elemente. Ko izberete vse svoje operacije (tudi v vseh podmapah), lahko začnete združevanje.

Zavedajte se, da če ciljne mape niste izrecno določili, bo cilj C v načinu treh map, B v načinu združevanja dveh map in v sinhronizacijski način bo A ali/in B.

Če ste določili ciljno mapo, preverite tudi, ali so vsi elementi, ki bi morali biti v izhodu, v drevesu. Obstaja nekaj možnosti, zaradi katerih so nekateri elementi izpuščeni iz primerjave in združevanja map. Preverite te možnosti, da se izognete neprijetnim presenečenjem:

- Rekurzivne mape: če je to izklopljeno, elementov v podmapah ne bo mogoče najti.

- Vzorec/Protivzorec: Vključi/izključi elemente, ki se ujemajo

- Izključi skrite datoteke

- Pokaži možnosti (Pokaži enake/različne datoteke, Datoteke samo v A/B/C)

Če spremenite nastavitve, da prikažete seznam več datotek, morate sami opraviti ponovno prečesavanje prek menija Mapa Ponovno skeniranje . (Razlog za to je, da zaradi hitrejše primerjave hitrosti &kdiff3; izpusti primerjavo za datoteke, ki jih ti kriteriji zavrnejo.) Če ste spremenili vzorce datotek in map, da izključite datoteke, bo seznam datotek takoj posodobljen, ko zaprete dialog možnosti.

Upoštevajte, da ko pišete v popolnoma novo mapo, običajno želite kopirati tudi enake datoteke. V tem primeru omogočite možnost Pokaži enake datoteke. Če je vaša ciljna mapa eden od vnosov, potem to ni potrebno, ker je datoteka že tam.

Če ste do sedaj zadovoljni, je ostalo enostavno.

Če želite združiti vse elemente: izberite Začni/Nadaljuj združevanje mape v meniju Mapa ali pritisnite F7 (kar je privzeta bližnjica). Če želite združiti samo trenutni element: izberite Zaženi operacijo za trenutnem elementu ali pritisnite F6.

Če zaradi nasprotujočih si vrst datotek nekateri elementi z neveljavnimi operacijami še vedno obstajajo, se bo prikazalo sporočilo in ti elementi bodo označeni, tako da lahko izberete veljavno operacijo za element.

Če združujete vse elemente, se prikaže pogovorno okno z možnostmi Naredi, Simuliraj in Prekliči.

- Izberite Simuliraj, če želite videti, kaj bi naredili, ne da bi tega dejansko storili. Prikazan bo podroben seznam vseh operacij.

- V nasprotnem primeru izberite Naredi to, da resnično začnete združevati.

Nato bo &kdiff3; izvedel navedeno operacijo za vse elemente. Če je potrebna ročna interakcija (združitev ene datoteke), se odpre okno za združevanje (glejte velik posnetek zaslona).

Ko končate z ročnim združevanjem datoteke, ponovno izberite Začni/Nadaljuj združevanje map ali tipko F7. Če ga še niste shranili, vas bo pogovorno okno pozvalo, da to storite. Nato bo &kdiff3; nadaljeval z naslednjim elementom.

Ko &kdiff3; naleti na napako, vam bo to povedal in prikazal verbose-status-information. Na dnu tega seznama bo nekaj sporočil o napakah, ki vam bodo pomagali razumeti vzrok težave. Ko nadaljujete z združevanjem (tipka F7) &kdiff3; vam bo ponudil možnost, da poskusite znova ali preskočite element, ki je povzročil težavo. To pomeni, da lahko pred nadaljevanjem izberete drugo operacijo ali rešite težavo na drug način.

Ko je združevanje končano, vas bo &kdiff3; obvestil preko sporočilnega polja.

Če so bili nekateri elementi združeni posamezno pred zagonom directorymerge, potem &kdiff3; si to zapomni (medtem ko teče ta združevalna seja) in jih ne združi znova, ko se pozneje izvede združevanje za vse elemente. Tudi če je bilo spajanje preskočeno ali ni bilo nič shranjeno, se ti elementi štejejo kot dokončani. Šele ko spremenite operacijo spajanja, bo status Končano elementa odstranjen in ga bo mogoče znova združiti.

### Možnosti za primerjavo in združevanje map

&kdiff3; nastavitve (meni Nastavitve Konfiguriraj &kdiff3;...) ima razdelek z imenom "Združevanje map" s temi možnostmi:

Rekurzivne mape

- Izberite, ali želite po mapah iskati rekurzivno.

Vzorci datotek:

- V drevo bodo postavljene samo datoteke, ki se ujemajo s katerim koli vzorcem tukaj. Tukaj lahko določite več kot en vzorec z uporabo podpičja ";" kot ločilo. Veljavni nadomestni znaki: '*' in '?'. (⪚. "`*.cpp;*.h`"). Privzeto je "*". Ta vzorec se ne uporablja za mape.

Datotečni proti-vzorci:

- Datoteke, ki ustrezajo temu vzorcu, bodo izključene iz drevesa. Tukaj lahko določite več kot en vzorec z uporabo podpičja ";" kot ločila. Veljavni nadomestni znaki: '*' in '?'. Privzeto je "`*.orig;*.o;*.obj`".

Anti-vzorci map:

- Mape, ki se ujemajo s tem vzorcem, bodo izključene iz drevesa. Tukaj lahko določite več kot en vzorec z uporabo podpičja ";" kot ločila. Veljavni nadomestni znaki: '*' in '?'. Privzeto je "`CVS;deps;.svn`".

Uporabite Prezri datoteko

- Prezrite datoteke in mape, ki bi jih prezrl tudi vaš nadzor vira. Številne samodejno ustvarjene datoteke so prezrte s seznami prezrtih. Velika prednost je, da je to lahko specifično za mapo prek lokalne datoteke za prezrtje. (Za več podrobnosti si oglejte dokumente za nadzor različic.)

Poiščite skrite datoteke in mape

- V nekaterih datotečnih sistemih imajo datoteke atribut "Skrita (Hidden)". Na drugih sistemih ime datoteke, ki se začne s piko "." povzroči, da se skrije. Ta možnostvam omogoča, da se odločite, ali želite te datoteke vključiti v drevo ali ne.Privzeto je vklopljeno.

Sledite povezavam datotek

- Za povezave do datotek: Ko je onemogočeno, se primerjajo simbolične povezave. Ko je omogočeno, se primerjajo datoteke za povezavami. Privzeto je izklopljeno.

Sledite povezavam map

- Za povezave do map: Ko je onemogočeno, bodo simbolične povezave primerjane. Ko je omogočeno, bo povezava obravnavana kot mapa in bo pregledana rekurzivno. (Upoštevajte, da program ne preveri, ali je povezava "rekurzivna". Tako bi na primer mapa, ki vsebuje povezavo do mape, povzročila neskončno zanko in čez nekaj časa, ko se sklad prelije ali je ves pomnilnik porabljen, zruši program.) Privzeto je izklopljeno.

Primerjava imen datotek, občutljiva na velike in male črke

- Privzeta vrednost je false v &Windows;, true za druge operacijske sisteme.

Način primerjave datotek:

- Binarna primerjava

- To je privzeti način primerjave datotek.

Popolna analiza

- Izvedite popolno analizo vsake datoteke in prikažite stolpce s statističnimi informacijami. (Število rešenih, nerešenih, nebelih in belih konfliktov.) Popolna analiza je počasnejša od preproste dvojiške analiza in veliko počasnejši pri uporabi v datotekah, ki ne vsebujejo besedila. (Določite ustrezne protivzorce datotek.)

Zaupaj velikosti in datumu spremembe (nevarno)

- Če primerjate velike mape prek počasnega omrežja, bo morda hitreje primerjati samo datume sprememb in dolžino datoteke. Toda to izboljšanje hitrosti prihaja s ceno majhne negotovosti. To možnost uporabljajte previdno. Privzeto je izklopljeno.

Zaupajte velikosti (nevarno)

- Podobno kot pri zaupanju v datum spremembe. Tu do prave primerjave ne pride. Dve datoteki veljata za enaki, če sta njuni velikosti datotek enaki. To je uporabno, če operacija kopiranja datoteke ni ohranila datuma spremembe. To možnost uporabljajte previdno. Privzeto je izklopljeno.

Sinhronizirajte mape

- Aktivira sinhronizacijski način, ko se primerjata dve mapi in ni bila določena izrecna ciljna mapa. V tem načinu bodo predlagane operacije izbrane tako, da sta obe izvorni mapi pozneje enaki. Tudi rezultat združevanja bo zapisan v obe mapi. Privzeto je izklopljeno.

Kopiraj novejše namesto združevanja (nevarno)

- Namesto združevanja bo predlagana operacija kopirala novejši vir, če pride do sprememb. (Šteje za nevarno, ker pomeni, da veste, da tudi druga datoteka ni bila urejena. V vsakem primeru preverite, da se prepričate.) Privzeto je izklopljeno.

Varnostne kopije datotek (.orig)

- Če je datoteka ali celotna mapa zamenjana z drugo ali je izbrisana, bo prvotna različica preimenovana s pripono `.orig`. Če stara datoteka varnostne kopije s končnico `.orig` že obstaja, bo ta izbrisana brez varnostne kopije. To vpliva tudi na običajno združevanje posameznih datotek, ne samo v načinu združevanja map. Privzeto je vklopljeno.

### Druge funkcije v oknu za združevanje map

#### Razdeljeni/celozaslonski način

Običajno pogled seznama z združevanjem map ostane viden, medtem ko se ena datoteka primerja ali združuje. Z miško lahko premikate razdelilno vrstico, ki ločuje seznam datotek od oken za razlikovanje besedila. Če tega ne želite, lahko onemogočite Mapa Mapa && Element menija Pogled razdeljenega zaslona besedila. Nato lahko uporabite element menija Mapa Preklopi pogled, da preklapljate med seznamom datotek in pogledom besedilne razlike, ki nato zavzameta celoten zaslon.

#### Primerjava ali združevanje ene datoteke

Verjetno vam bo ljubši preprost dvojni klik na datoteko, da jo primerjate. Kljub temu obstaja tudi vnos v meniju Mapa. Posamezno datoteko lahko tudi neposredno združite tako, da jo izberete in izberete menijsko postavko Združi Združi trenutno datoteko. Ko shranite rezultat, bo status nastavljen na dokončano in datoteka ne bo ponovno združena, če se začne združevanje map.

Vendar upoštevajte, da bodo te informacije o stanju izgubljene, ko znova zaženete prečesavanje mape: Mapa Ponovno prečesavanje

#### Primerjava ali združevanje datotek z različnimi imeni

Včasih morate primerjati ali združiti datoteke z različnimi imeni (⪚ trenutno datoteko in varnostno kopijo v isti mapi).

Izberite točno datoteko s klikom na ikono v stolpcu A, B ali C. Tako izbrana prva datoteka bo označena z A, druga in tretja pa z B in C ne glede na to, v katerem stolpcu sta. tako lahko izberete do tri datoteke.

Nadaljujte z izbiro Mapa Primerjaj izrecno izbrane datoteke ali Mapa Združi izrecno izbrane datoteke element menija. Za vaše udobje se ti vnosi menija prikažejo tudi kot kontekstni meni, ko z desno miškino tipko kliknete zadnjo izbrano datoteko.

Primerjava ali združitev datoteke se bo zgodila v istem oknu. Če ta način uporabite za mape, se odpre novo okno.

## Razne teme

### Preglednost omrežja preko KIO

#### KIO-Sužnji

Knjižnica KIO iz &frameworks; podpira preglednost omrežja prek podrejenih KIO. &kdiff3; uporablja to za branje vhodnih datotek in za preiskovanje map. To pomeni, da lahko določite datoteke in mape na lokalnih in oddaljenih virih prek &URL;s.

Primer:

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

Prva vrstica primerja lokalno datoteko z datoteko na &FTP; strežniku. Druga vrstica primerja mapo znotraj stisnjenega arhiva z lokalno mapo.

Drugi KIO-sužnji, ki so zanimivi, so:

- Datoteke iz WWW (http:),

- Datoteke iz &FTP; (ftp:),

- Šifriran prenos datotek (fish:, sftp:),

- &Windows; viri (smb:),

- Lokalne datoteke (datoteka:),

Druge stvari, ki so možne, a verjetno manj uporabne, so:

- Man-strani (man:),

- Info-strani (info:),

#### Kako napisati &URL;s

&URL; ima drugačno sintakso v primerjavi s potmi za lokalne datoteke in mape. Nekaj stvari je treba upoštevati:

- Pot je lahko relativna in lahko vsebuje "." ali "..". To ni mogoče za &URL;, ki so vedno absolutni.

- Posebni znaki morajo biti zapisani s "pobegom". ("`#`" -> "`%23`", presledek ->"`%20`", itd.) Npr. datoteka z imenom "`#`foo`#`" bi imela &URL; "datoteka:/`%23`foo`%23`".

- Ko &URL;-ji ne delujejo po pričakovanjih, jih poskusite najprej odpreti v &konqueror;.

#### Zmogljivosti KIO-Slaves

Preglednost omrežja ima eno pomanjkljivost: vsi viri nimajo enakih zmogljivosti.

Včasih je to posledica datotečnega sistema strežnika, včasih zaradi protokola. Tukaj je kratek seznam omejitev:

- Včasih ni podpore za povezave.

- Ali pa ni mogoče razločiti, ali povezava kaže na datoteko ali mapo; vedno predpostavlja datoteko. (ftp:, sftp:).

- Velikosti datoteke ni mogoče vedno določiti.

- Omejena podpora za dovoljenja.

- Ni možnosti spreminjanja dovoljenj ali časa spreminjanja, zato se bodo dovoljenja ali čas kopije razlikovali od izvirnika. (Glejte možnost Zaupajte velikosti (nevarno).) (Spreminjanje dovoljenj ali časa spreminjanja je možno samo za lokalne datoteke.)

### Uporaba &kdiff3; kot &git; Orodje za razlikovanje in spajanje

&kdiff3; se lahko uporablja kot &git; orodje za razlikovanje in spajanje.

Samo dodajte naslednje vrstice v datoteko `gitconfig`.

    [diff]
            tool = kdiff3
    [difftool "kdiff3"]
            path = <path to kdiff3 binary in your system>
    [difftool]
            prompt = false
            keepBackup = false
            trustExitCode = false
    [merge]
            tool = kdiff3
    [mergetool]
            prompt = false
            keepBackup = false
            keepTemporaries = false
    [mergetool "kdiff3"]
            path = <path to kdiff3 binary in your system
    >

Če želite nato videti razliko med dvema objavama, uporabite `git difftool `first_hash` `second_hash` --tool=kdiff3 --cc `some_file_in_the_git_tree``

Za združitev veje z &kdiff3; uporabite `git merge `branch_name` && git mergetool --tool=kdiff3`

Po razrešitvi sporov pri združevanju na običajen način je dovolj, da odobrite spremembe, da opravite delo.

## Vprašanja in odgovori

&reporting.bugs; &updating.documentation;

Zakaj se imenuje "&kdiff3;"?

Orodja z imenom KDiff in KDiff2 (zdaj imenovana &kompare;) že obstajata. Tudi &kdiff3; bi moralo predlagati, da se lahko združi kot orodje `diff3` v zbirki Diff-Tool.

Zakaj sem ga izdal pod GPL?

Programe GPL uporabljam že zelo dolgo in sem se veliko naučil, ko sem si ogledal številne vire. Zato je to moja "hvala" vsem programerjem, ki so prav tako storili ali bodo storili enako.

Nekateri gumbi in funkcije manjkajo. Kaj je narobe?

Prevedli ste iz izvorne kode, vendar verjetno niste navedli pravilne predpone za namestitev. Privzeto `cmake` želi namestiti v `/usr/local`, nato pa datoteko virov uporabniškega vmesnika (&ie; `kdiff3ui.rc`) ni mogoče najti. Datoteka `README` vsebuje več informacij o pravilni predponi.

Pogosto se vrstice, ki so podobne, vendar ne enake, pojavijo ena poleg druge, včasih pa tudi ne. Zakaj?

Vrstice, kjer je različna le količina presledkov, se najprej obravnavajo kot "enake", medtem ko samo en drugačen nebel znak povzroči, da so vrstice "različne". Če se podobne črte pojavljajo druga zraven druge, je to pravzaprav naključje, vendar je na srečo pogosto tako. Glejte tudi Pomoč za ročno razlikovanje.

Zakaj je treba rešiti vse spore, preden je mogoče shraniti rezultat spajanja?

Za vsak enak ali različen razdelek si urejevalnik v oknu rezultatov združevanja zapomni, kje se začne ali konča. To je potrebno, da se spori lahko rešijo ročno s preprosto izbiro gumba vira (A, B ali C). Te informacije se med shranjevanjem kot besedilo izgubijo in ustvarjanje posebnega formata datoteke, ki podpira shranjevanje in obnavljanje vseh potrebnih informacij, je preveč naporno.

Kako lahko sinhroniziram pogled razlik in združevanja, tako da vsi pogledi prikazujejo isti položaj besedila?

Kliknite na stolpec s povzetkom levo od besedila. (Glejte tudi tukaj.)

Zakaj `git difftool --dir-diff` pri uporabi KDiff3 kot difftool prikaže "Napaka mešanice povezav in običajnih datotek"?

To je stranski učinek notranjega delovanja gita. Če poskušate primerjati prejšnjo revizijo s trenutnim delovnim drevesom, bo git dejansko primerjal datoteke, ki predstavljajo preteklo objavo, s simbolnimi povezavami, ki kažejo na delovno drevo. Od 1.9 dalje ima KDiff3 privzeto vključeno Sledi povezavam datotek in Sledi povezavam map. Pred tem so bili privzeto izklopljeni. To ni bilo pomembno, če ne delate, če je bila tudi "Popolna analiza" izklopljena. Vendar bi s Popolno analizo na KDiff3 sprva poskušal primerjati pot, na katero kaže povezava, namesto da bi ji sledil. Pred 1.8 je bila nastala napaka prezrta. Vendar je 1.8 začel poročati o napaki.

Zakaj urejevalnik v oknu z rezultati spajanja nima funkcije "razveljavi"?

To je bil do sedaj preveč truda. Vedno lahko obnovite različico iz enega vira (A, B ali C), tako da kliknete ustrezni gumb. Za veliko urejanja je vseeno priporočljiva uporaba drugega urejevalnika.

Ko sem odstranil nekaj besedila, se je nenadoma pojavilo "<Ni izvorne vrstice>" in ga ni mogoče izbrisati. Kaj to pomeni in kako to odstraniti?

Za vsak enak ali različen razdelek si urejevalnik v oknu rezultatov spajanja zapomni, kje se začne ali konča. "<Ni izvorne vrstice>" pomeni, da v razdelku ni več ničesar, niti znaka za novo vrstico. To se lahko zgodi med samodejnim združevanjem ali z urejanjem. To ni problem, saj se ta namig ne bo pojavil v shranjeni datoteki. Če želite nazaj izvirni vir, preprosto izberite razdelek (kliknite levi stolpec s povzetkom) in nato kliknite gumb vira s potrebno vsebino (A/B ali C).

Zakaj &kdiff3; ne podpira označevanje sintakse?

&kdiff3; že uporablja veliko barv za poudarjanje razlik. Več poudarjanja bi bilo zmedeno. Za to uporabite drug urejevalnik.

Ali lahko uporabim &kdiff3; za primerjavo LibreOffice/OpenOffice.org, &Microsoft; Word, &Microsoft; Excel, &PDF;, &etc;. datotek?

Čeprav &kdiff3; bo analiziral katero koli vrsto datoteke, rezultat za vas verjetno ne bo zelo zadovoljiv.

&kdiff3; je bil narejen za primerjavo čistih besedilnih datotek. LibreOffice/ OpenOffice.org, &Microsoft; Word, &Microsoft; Excel > &etc;. shrani veliko več informacij v datoteke (o pisavah, slikah, straneh, barvah &etc;), ki jih &kdiff3; ne pozna. Torej &kdiff3; vam bo prikazal vsebino datoteke, interpretirano kot čisto besedilo, vendar je to morda neberljivo ali pa bo vsaj videti zelo čudno.

Ker večina današnjih programov shranjuje svojo vsebino v &XML; formatu, ga boste morda lahko prebrali kot čisto besedilo. Torej, če je bila sprememba le majhna, vam &kdiff3; še vedno lahko pomaga.

Najboljša rešitev, če želite primerjati samo besedilo (brez vdelanih predmetov, kot so slike), je uporaba Uredi Izberi vse in Uredi Kopiraj menijske elemente v vašem programu, da kopirate zanimivo besedilo v odložišče in nato v &kdiff3; prilepite besedilo v katero koli okno za vnos razlike. (Glejte tudi Izberi, kopiraj in prilepi.)

Kam je izginila možnost mape Seznam samo razlik?

Zdaj je na voljo več možnosti »Pokaži« v meniju Mapa. Če onemogočite Pokaži enake datoteke, boste dosegli tisto, kar je prej omogočalo Seznam samo razlik.

Kako lahko naredim velik izbor v oknu za vnos razlike, ker drsenje traja tako dolgo?

Zaženite izbiro kot običajno (kliknite in držite &LMB;). Nato uporabite navigacijske tipke (⪚ &PgUp;, &PgDn;), medtem ko držite &LMB; navzdol. (Glejte tudi Izberi, kopiraj in prilepi.)

Tukaj je toliko informacij, a na vaše vprašanje še vedno ni odgovora?

Prosim, pošljite mi svoje vprašanje. Cenim vsak komentar.

## Zasluge in licenca

&kdiff3; - Orodje za primerjavo in združevanje datotek in map

Avtorske pravice za program 2002-2007 Joachim Eibl joachim.eibl na gmx.de

Nekaj odličnih idej in poročil o napakah je prišlo od kolegov in mnogih ljudi iz Wild Wild Weba. Hvala vam!

Dokumentacija Copyright © 2002-2007 Joachim Eibl joachim.eibl na gmx.de

Dokumentacija Copyright © 2017-2019 Michael Reeves reeves.87 na gmail.com

Prevod: Matjaž Jeranmatjaz.jeran@amis.net

&underFDL; &underGPL;
&documentation.index;