Mappesammenligning og sammenfletning med KDiff3

Introduktion til mappesammenligning og sammenfletning
Ofte skal programmører ændre mange filer i en mappe for at opnå deres formål. For at opnå dette lader KDiff3 dig også sammenligne og sammenflette hele mapper rekursivt!
Selvom sammenligning og sammenfletning af mapper synes at være ganske selvklart, er der flere detaljer som du bør kende til. Det vigtigste er naturligvis det faktum at mange filer nu kan påvirkes af hver handling. Hvis du ikke har sikkerhedskopier af originale data, kan det være meget svært eller til og med umuligt at komme tilbage til originaltilstanden. Så inden du påbegynder en sammenfletning, skal du sørge for at data er sikret, og at det er muligt at nulstille. Om du laver et arkiv, eller bruger et versionskontrolsystem er din egen beslutning, men til og med erfarne programmører og integratører behøver sommetider gammel kildekode. Bemærk også at også selvom jeg (forfatteren til KDiff3) forsøger at gøre mit bedste, kan jeg ikke garantere at der ikke er fejl. Ifølge GNU GPL er der INGEN GARANTI af nogen slags for dette program. Så hvor ydmyg, og husk altid:
At fejle er menneskeligt, men for at virkelig lave rod i det behøves en maskine.
Så dette er hvad programmet kan gøre for dig: KDiff3 ...
... læser og sammenligner to eller tre mapper rekursivt,
... håndterer symbolske link særskilt,
... lader dig bladre gennem filer med et dobbeltklik,
... foreslår en sammenfletningsmulighed for hvert objekt, som du kan ændre inden mappesammenfletningen startes,
... lader dig simulere sammenfletningen og giver en liste af handlingerne som ville ske, uden at virkelig gøre dem,
... lader dig udføre sammenfletningen, og lader dig bestemme hvornår manuel interaktion behøves,
... lader dig udføre valgt handling for alle punkter (tasten F7) eller markeret punkt (tasten F6),
... lader dig fortsætte sammenfletningen efter manuel interaktion med tasten F7,
... laver valgfrie sikkerhedskopier, med filendelsen ".orig".
...

Start mappesammenligning eller sammenfletning
Dette ligner meget sammenfletning og sammenligning af en enkelt fil. Du skal kun angive mapper på kommandolinjen eller i dialogen for filåbning.

Sammenlign eller sammenflet to mapper:

kdiff3 kat1 kat2
   kdiff3 kat1 kat2 -o målkat

Hvis ingen målmappe angives, bruger KDiff3 kat2.

Sammenlign eller sammenflet tre mapper:

kdiff3 kat1 kat2 kat3
   kdiff3 kat1 kat2 kat3 -o målkat

Når tre mapper sammenflettes, bruges kat1 som basen for sammenfletningen. Hvis ingen målmappe angives, bruger KDiff3 kat3 som målmappe for sammenfletningen.
Bemærk at kun sammenligningen startes automatisk, ikke sammenfletningen. For det skal du først vælge et menupunkt eller tasten F7. (Mere information kommer senere.)

Katalogsammenfletning af synlig information
Mens mapperne læses vises et meddelelsesfelt som informerer dig om forløbet. Hvis du afbryder mappesøgningen, vises kun filer som hidtil er sammenlignet.
Når mappegennemsøgningen er færdig, viser KDiff3 et listefelt med tilbageværende resultater, ...
... og detaljer om det markerede punkt til højre:

Navnesøjlen
Hver fil og mappe som blev fundet under søgningen vises her i et træ. Du kan vælge et punkt ved at klikke en gang på det med musen.
Mapperne er normalt sammentrukket. Du kan ekspandere og trække dem sammen ved at klikke på "+"/"-", ved at dobbeltklikke på punktet eller ved at bruge tasterne "venstrepil" og "højrepil". Menuen "Mappe" indeholder også to tilvalg "Træk alle undermapper sammen" og "Ekspandér alle undermapper" som du kan bruge til at trække sammen eller ekspandere alle mapper på én gang.
Hvis du dobbeltklikker på et filpunkt, udføres filsammenligning og sammenligningvinduet for filer vises.
Ikonen i navnesøjlen svarer til filtypen i den første mappe ("A"). Den kan være en af disse:
Normal fil
Normal mappe (mappeikon)
Link til en fil (filikon med en link-pil)
Link til en mappe (mappeikon med en link-pil)
Hvis filtypen er anderledes i de øvrige mapper, ses det i søjlerne A/B/C og i vinduet som viser detaljerne om det markerede punkt. Bemærk at i disse tilfælde kan ingen sammenfletningshandling vælges automatisk. Når sammenfletningen startes, informeres brugeren om denne slags problemer.

Søjlerne A/B/C og farvesammensætninger
Som det ses i billedet ovenfor, bruges farverne rød, grøn, gul og sort i søjlerne A/B/C.
Sort: Dette punkt eksisterer ikke i denne mappe.
Grøn: Nyeste punkt.
Gul: Ældre end grøn, nyere end rød.
Rød: Ældst punkt.
Men for punkter som er identiske i sammenligningen, er farven også identisk selvom alderen ikke er det.
Mapper anses for at være ens hvis alle objekter de indeholder er ens. Så har de også samme farve. Alderen på en mappe spiller ingen rolle for dens farve.
Idéen til denne farvesammensætning fandt jeg i dirdiff. Farverne svarer til farverne for et blad, som er grønt i begyndelsen, derefter bliver gult og til sidst rødt når det er gammelt.

Handlingssøjlen
Efter at have sammenlignet mapperne evaluerer KDiff3 også et forslag til sammenfletningshandling. Den vises i søjlen "Handling". Du kan ændre den ved at klikke på handlingen du vil ændre. En lille menu dukker op og lader dig vælge en handling for dette punkt. (Du kan også vælge den oftest bruge handling via tastaturet. Ctrl+1/2/3/4/Delete vælger A/B/C/Sammenflet/Slet hvis de er tilgængelige.) Denne handling udføres under sammenfletningen. Hvilke handlinger som er tilgængelige afhænger af punktet og sammenfletningstilstanden som bruges. Sammenfletningstilstanden er en af:
Sammenfletning af tre mapper ("A" behandles som ældste basis for begge).
Sammenfletning af to mapper.
To-mappes synkroniseringstilstand (aktiveres med tilvalget "Synkronisér mapper").
Ved tremappers-sammenfletning er den handling der foreslås: Hvis for et objekt...
... alle tre mapper er ens: Kopiér fra C
... A og C er ens med B er det ikke: Kopiér fra B (eller hvis B ikke eksisterer, slet målet hvis det eksisterer)
... A og B er ens men C er det ikke: Kopiér fra C (eller hvis C ikke eksisterer, slet målet hvis det eksisterer)
... B og C er ens med A er det ikke: Kopiér fra C (eller hvis C ikke eksisterer, slet målet hvis det eksisterer)
... kun A eksisterer: Slet målet (hvis det eksisterer)
... kun B eksisterer: Kopiér fra B
... kun C eksisterer: Kopiér fra C
... A, B og C er ikke ens: Sammenflet
A, B og C har ikke samme filtype (f.eks. A er en mappe, B er en fil): "Fejl: Konflikt i filtyper". Så længe sådanne punkter eksisterer, kan mappesammenfletningen ikke startes.
Ved tomappers sammenfletning er den foreslåede handling: Hvis for et objekt...
... begge mapper er ens: Kopiér fra B
...A eksisterer men ikke B: Kopiér fra A
... B eksisterer men ikke A: Kopiér fra B
... A og B eksisterer men er ikke ens: Sammenflet
A og B har ikke samme filtype (f.eks. A er en mappe, B er en fil): "Fejl: Konflikt i filtyper". Så længe sådanne punkter eksisterer, kan mappesammenfletningen ikke startes.
Synkroniseringstilstand er kun aktiv hvis to mapper og ingen eksplicit målmappe angives, og hvis tilvalget "Synkronisér mapper" er aktivt. KDiff3 vælger så en standardhandling så begge mapper er ens bagefter. Hvis for et punkt ...
... begge mapper er ens: Ingenting gøres.
... A eksisterer, men ikke B: Kopiér A til B
... B eksisterer, men ikke A: Kopiér B til A
... A og B eksisterer, men er ikke ens: Sammenflet og opbevar resultatet i begge mapper. (For brugeren er det synlige filnavn for at gemme B, men derefter kopierer KDiff3 også B til A.)
A og B har ikke samme filtype (f.eks. A er en mappe, B er en fil): "Fejl: Konflikt i filtyper". Så længe sådanne punkter eksisterer, kan mappesammenfletningen ikke startes.
Når to mapper sammenflettes og tilvalget "Kopiér nyere i stedet for at sammenflette" er markeret, kigger KDiff3 på datoen og foreslår at vælge den nyere fil. Hvis filerne ikke er ens men har samme dato, indeholder handlingen "Fejl: Dato er ens men filerne er det ikke." Så længe sådanne punkter eksisterer, kan mappesammenfletningen ikke startes.

Statussøjlen
Under sammenfletningen behandles en fil af gangen. Statussøjlen viser "Færdig" for punkter hvor sammenfletningshandlingen er lykkedes, og en anden tekst hvis noget uventet indtraf. Når en sammenfletning er færdig, bør du udføre en sidste kontrol for at se at status for alle punkter er acceptabel.

Statistiske søjler
Når filsammenligningtilstanden "Fuldstændig analyse" er aktiveret i valgmulighederne, viser KDiff3 ekstra søjler som indeholder antal uløste, løste, ikke blanke og blanke konflikter. (Søjlen løste vises kun når mapper sammenlignes eller sammenflettes.)

Vælg listede filer
Flere tilvalg påvirker hvilke filer som listes her. Nogle er tilgængelige i indstillingsdialogen. Menuen Mappe indeholder punkterne:
"Vis identiske filer": Filer som er detekteret som ens i alle inddatamapper.
"Vis forskellige filer": Filer som findes i to eller flere mapper men ikke er ens.
"Vis kun filer i A": Filer som kun findes i A, men ikke i B eller C.
"Vis kun filer i B": Filer som kun findes i B, men ikke i A eller C.
"Vis kun filer i C": Filer som kun findes i C, men ikke i A eller B.
Aktivér kun valgmulighederne "Vis" for de punkter du vil liste. Hvis du for eksempel kun vil liste alle punkter som enten findes i A eller i B men ikke i begge, skal du aktivere "Vis kun filer i A" og "Vis kun filer i B" og deaktivere alle andre ("Vis identiske filer", "Vis forskellige filer", "Vis kun filer i C"). Listen opdateres med det samme for at svare til ændringen.
Disse tilvalg gælder også for mapper med en undtagelse: At deaktivere "Vis forskellige filer" skjuler ikke hele mapper. Dette fungerer kun for filer inde i dem.

Udfør en mappesammenfletning
Du kan enten sammenflette det valgte punkt (fil eller mappe), eller alle punkter. Når du har lavet alle valg af handlinger (også i alle undermapper), kan du udføre sammenfletningen.
Vær klar over at hvis du ikke eksplicit angav en målmappe, bliver målet "C" i tre-mappetilstand, "B" i to-mappetilstand, og i synkroniseringstilstand er det "A" og/eller "B".
Hvis du også har angivet en målmappe, kontrollér at alle objekter som skal eksisterer i udskriften eksisterer i træet. Der er nogle valgmuligheder som får visse objekter til at blive udeladt fra mappesammenligningen og sammenfletningen. Kontrollér disse valgmuligheder for at undgå ubehagelige overraskelser:
"Rekursive mapper": Hvis det er fra, er der ikke punkter i undermapper.
"Mønster" eller "Undtagelsesmønster": Inkludér eller undtag punkter som matcher.
"Undtag gemte filer"
"List kun forskelle": Filer som matcher i alle mapper vises ikke i træet, og altså heller ikke i målet.
(I nuværende version skal du selv udføre en omsøgning via menuen "Mappe"-> "Skan igen", efter at have ændret tilvalg som påvirker mappegennemsøgningen.)
Hvis du er tilfreds indtil videre, er resten enkelt.
For at sammenflette alle punkter: Vælg "Start eller fortsæt mappesammenfletning" i menuen "Mappe" eller tryk på F7 (som er genvejstasten). For kun at sammenflette nuværende punkt: Vælg "Udfør handling for nuværende punkt" eller tryk på F6.
Hvis visse objekter med ugyldige filtyper stadigvæk eksisterer, på grund af filtyper med konflikter, vises et meddelelsefelt og objektet udpeges, så du kan vælge en gyldig handling for objektet.
Hvis du sammenfletter alle punkter vises en dialog som giver dig valgmulighederne "Gør det", "Simulér det" og "Annullér".
Vælg "Simulér det" hvis du vil se hvad der ville blive gjort uden virkelig at gøre det. En udførlig liste med alle handlinger vises.
Vælg ellers "Gør det" for virkelig at udføre sammenfletningen.
Derefter udfører KDiff3 den angivne handling for alle punkter. Hvis manuel interaktion kræves (sammenfletning af enkelt fil), vises et sammenfletningsvindue (se det store skærmaftryk).
Når du er færdig med en fil, vælges igen "Start eller fortsæt mappesammenfletning" eller tryk på F7. Hvis du ikke har gemt endnu, beder en dialog dig om at gøre det. Derefter fortsætter KDiff3 til næste punkt.
Når KDiff3 støder på en fejl, meddeles det og udførlig statusinformation vises. Længst nede i listen er der nogen fejlmeddelelser som bør hjælpe dig til at forstå problemets grund. Når du fortsætter sammenfletningen (tasten F7), giver KDiff3 dig valget at forsøge igen eller springe over punktet som forårsagede problemet. Dette betyder at du kan vælge en anden handling, eller løse problemet på anden måde, inden du fortsætter.
Når sammenfletningen er færdig, informerer KDiff3 dig med et meddelelsesfelt.
Hvis visse punkter sammenflettedes individuelt, husker KDiff3 det (mens sammenfletningssessionen er i gang), og sammenfletter dem ikke igen når sammenfletningen for alle punkter udføres. Selv når sammenfletningen springes over eller ingenting gemmes regnes disse punkter som færdige. Kun når sammenfletningshandlingen ændres, sammenflettes punkterne igen.

Tilvalg for at sammenligne og sammenflette mapper
Indstilling af KDiff3 (menuen "Opsætning"->"Indstil KDiff3") har nu en side som hedder "Mappesammenfletning" med følgende tilvalg:
Rekursive mapper:	Vælg om mapper skal gennemsøges rekursivt.
Mønster for filer:	Kun filer som matcher et mønster her tilføjes i træet. Mere end et mønster kan angives ved at bruge semikolon ";" som skilletegn. Gyldige jokertegn: "*" og "?". (f.eks. "*.cpp;*.h"). Standardværdien er "*". Mapper behøver ikke at matche mønstret.
Undtagelsesmønster for filer:	Filer og mapper som matcher et mønster undtages fra træet. Mere end et mønster kan angives ved at bruge semikolon ";" som skilletegn. Gyldige jokertegn: '*' og '?'. Standardværdien er "*.orig;*.o".
Brug .cvsignore:	Ignorér filer og mapper som også ville blive ignoreret af CVS. Mange automatisk genererede filer ignoreres af CVS. Den store fordel er at dette kan være mappespecifikt via en lokal ".cvsignore" fil. (Se info:/cvs/cvsignore.)
Find efter skjulte filer og mapper:	For visse filsystemer har filer egenskaben "Skjult". For andre systemer skjules et filnavn som begynder med et punktum ("."). Dette lader dig bestemme om disse filer skal indgå i træet eller ej. Standardværdien er til.
Følg fillink:	For link til filer: Hvis deaktiveret, sammenlignes de symbolske link. Hvis aktiveret, sammenlignes filerne bagved linkene. Normalværdien er fra.
Følg mappelink:	For link til mapper: Hvis deaktiveret, sammenlignes symbolske link. Hvis aktiveret behandles linket som et mappe og gennemsøges rekursivt. (Bemærk at programmet ikke kontrollerer om linket er "rekursivt". En mappe som indeholder et link til samme mappe vil forårsage en uendelig løkke, og efter en vis tid når stakken bliver fuld eller hukommelsen løber ud, bryder programmet sammen.) Standardværdien er fra.
Kun forskelle på listen:	Kun objekter som ikke er ens i alle inddatamapper er på listen, og kun ændrede filer er synlige. Derfor kopieres filer ikke som er ens i alle mapper ved en sammenfletning og hvis målmappen ikke indeholder filerne før sammenfletningen, kan du muligvis senere mangle nogle filer. (Tilvalget bliver formodentlig ændret i en senere version.) Normalværdien er fra.
Filsammenligningstilstand:	
Binær sammenligning:	Dette er standardsammenligningstilstanden.
Fuld analyse:	Udfør en fuld analyse for hver fil og vis de statistiske informationssøjler. (Antal løste, uløste, ikke blanke og blanke konflikter.) Den fulde analyse er langsommere end en simpel binær analyse, og meget langsommere når den bruges på filer der ikke indeholder tekst. (Angiv de passende fil-antimønstre.)
Stol på ændringsdato:	Hvis du sammenligner store mapper via et langsomt netværk, kan det gå hurtigere kun at sammenligne ændringsdato og fillængde. Men hastighedsforbedringen kommer med prisen af en lille usikkerhed. Brug dette med forsigtighed. Normalværdien er fra.
Stol på størrelsen:	Ligesom at stile på ændringsdatoen. Ingen egentlig sammenligning foregår. To filer betragtes som ens hvis deres filstørrelser er ens. Dette er nyttigt når filkopieringsoperationen ikke bevarer ændringsdatoen. Brug dette med forsigtighed. Normalværdien er fra.
Synkronisér mapper:	Aktiverer "synkroniseringstilstand" når to mapper sammenlignes og ingen eksplicit målmappe angives. I denne tilstand vælges de foreslåede handlinger så begge kildemapperne er ens bagefter. Sammenfletningsresultatet skrives også til begge mapper. Normalværdien er fra.
Kopiér nyere i stedet for at sammenflette:	I stedet for at sammenflette kopieres den foreslåede handling den nyere kilden hvis der er sket om ændringer. (Anses for at være usikkert, eftersom det betyder at man antager at den anden fil ikke også er redigeret. Tjek for at være sikker i hvert enkelt tilfælde.) Normalværdien er fra.
Sikkerhedskopiér filer:	Hvis en fil eller hel mappe erstattes med en anden eller slettes, så ændres originalversionens navn med tilføjelse af filendelsen ".orig". Hvis en gammel sikkerhedskopi med filendelsen ".orig" allerede eksisterer slettes den uden sikkerhedskopiering. Dette gælder også normal sammenfletning af enkelte filer, ikke kun sammenfletningstilstand for mapper. Standardværdien er til.

Andre funktioner i mappesammenfletningsvinduet

Opdelt eller fuldskærmstilstand
Sædvanligvis forbliver listevinduet for mappesammenfletning synligt mens en enkelt fil sammenlignes eller sammenflettes. Du kan flytte linjen som opdeler fillisten fra vinduerne til tekstsammenligning med musen. Hvis du ikke vil gøre dette, kan du deaktivere "Opdelt skærmvisning" i menuen "Mappe". Derefter kan du bruge "Skift visning" i menuen "Mappe" til at skifte mellem fillisten og vinduerne til tekstsammenligning, som så optager hele vinduet.

Sammenlign og sammenflette en enkelt fil
Du foretrækker formodentlig et almindeligt dobbeltklik på musen for at sammenligne en fil. Ikke desto mindre er der også en indgang i menuen "Mappe". Du kan også direkte sammenflette en enkelt fil, uden at starte mappesammenfletning via "Sammenflet markerede filer" i menuen "Mappe". Når resultatet gemmes, sættes status til færdig, og filen sammenflettes ikke igen hvis en mappesammenfletning startes.
Men observér at statusinformationen går tabt når du kører en mappegennemsøgning igen: "Mappe"-menuen "Skan igen".

Sammenlign og sammenflet filer med forskellige navne
Sommetider behøver du at sammenligne eller sammenflette filer med forskellige navne (f.eks. nuværende fil og sikkerhedskopi i samme mappe).
Markér den nøjagtige fil ved at klikke på ikonen i søjlen A, B eller C. Filen som først markeres på den måde markeres med "A", den anden og tredje med "B" og "C" uafhængig af hvilken søjle de findes i. Kun op til tre filer kan markeres på denne måde.
Fortsæt ved at vælge "Sammenlign eksplicit markerede filer" eller "Sammenflet eksplicit markerede filer" fra menuen "Mappe". Af bekvemmelighedsgrunder findes også menuvalgmulighederne som en sammenhængsafhængig menu som vises når du klikker på den senest markerede fil.
Sammenligningen eller sammenfletningen af en fil sker i samme vindue. Hvis denne metode bruges for mapper åbnes et nyt vindue.