

Editorfönstret för sammanfogningsutdata (under indatafönstren för jämförelse) har också en informationsrad längst upp som visar Utmatning, filnamnet och [Ändrad]
om du redigerat något. Oftast innehåller det någon text från de automatiska sammanfogningsfunktionerna, men det innehåller också ofta konflikter.
Spara är inaktiverat till alla konflikter är lösta! (Använd knapparna för att hitta återstående konflikter.)
Med bara två filer är varje skillnad också en konflikt, som måste lösas manuellt.
Med tre indatafiler behandlas den första som bas, medan den andra och tredje indatafilen innehåller ändringar. Om bara indata B eller C har ändrats för en viss rad, men inte båda väljes den ändrade källan automatiskt. Bara om B och C har ändrats på samma rader, detekterar verktyget en konflikt som måste lösas manuellt. När B och C är likadana, men inte samma som A, väljes C.
Editorfönstret för sammanfogningsutdata har också en sammanfattningskolumn till vänster. Den visar bokstaven för indata som raden valdes, eller ingenting om alla tre källorna var likadana för raden. Vid konflikter visar den ett frågetecken "?" och raden visar "< Konflikter vid sammanfogning >", allt med rött. Eftersom det skulle ta mycket lång tid att lösa konflikter rad för rad, grupperas rader i grupper som har samma skillnader och konfliktkaraktär. Konflikter med bara blanktecken skiljs dock från andra konflikter för att förbättra sammanfogningen av filer där indenteringen ändrats på många rader.
När du klickar på sammanfattningskolumnen med vänster musknapp i endera fönstret, så markeras gruppen som hör till den raden i alla fönster och gruppens början visas. (Det här kan innebära ett automatiskt byte av position i fönstren om gruppens början inte syns.) Gruppen blir då den "aktuella gruppen". Den markeras med alternativetBakgrundsfärgen för aktuellt jämförelseintervall i objektet Integrering och en svart rad visas till vänster om texten.
Knappraden under menyraden innehåller tre knappar för indataval som innehåller bokstäverna A, B och C. Klicka på knappen för indataval för att infoga rader (eller ta bort dem om de redan infogats) från respektive källfil. För att välja rader från flera indatafiler klicka på respektive knappar i nödvändig ordning. Om du till exempel vill att rader från B ska hamna före rader från A i utdata, klicka först på B och därefter på A.
Om du använder knappen (see Avancera automatiskt), måste du inaktivera det innan du väljer rader från flera indatafiler eller om du vill redigera raderna efter du valt dem. Annars går KDiff3 till nästa konflikt efter den första indatafilen valts.
Det är ofta användbart att direkt redigera sammanfogad utdata. Sammanfattningskolumnen visar "m" för varje rad som ändrades manuellt. När skillnaderna till exempel justeras på ett sätt så att ett enkelt val av indata inte är tillfredsställande, kan du markera texten som behövs och använda normal kopiera och klistra in för att placera den i sammanfogad utdata.
Ibland, när en rad tas bort antingen på grund av automatisk sammanfogning eller genom redigering och inga andra rader finns kvar i gruppen, visas texten <Ingen källrad> på raden. Det är bara en platsmarkör för gruppen om du ändrar dig och väljer en källa igen. Texten syns inte i sparade filer eller i några markeringar som du vill kopiera och klistra in.
Texten "< Konflikter vid sammanfogning >" visas på klippbordet om du kopierar och klistrar in någon text som innehåller en sådan rad. Men var ändå försiktig med att göra det.
Den normala sammanfogningen börjar med att automatiskt lösa enkla konflikter. Menyn tillhandahåller också några alternativ för andra vanliga behov. Om du måste välja samma källfil för de flesta konflikter, kan du välja A, B eller C överallt, eller bara för återstående olösta konflikter, eller för olösta konflikter med blanktecken. Om du vill bestämma själv för varje enskild skillnad, kan du , eller om du vill återgå till de automatiska valen i KDiff3 kan du välja . Då startar KDiff3 om sammanfogningen. För åtgärder som påverkar dina tidigare ändringar frågar KDiff3 om bekräftelse innan åtgärden utförs.
Notera
När endera källan väljes för olösta konflikter för blanktecken och alternativet Ignorera siffror (behandla som blanktecken) eller Ignorera C/C++ kommentarer (behandla som blanktecken) under alternativet Jämför används, så behandlas ändringar i siffror eller kommentarer också som blanktecken.
Många versionshanteringssystem stöder särskilda nyckelord i filen (t.ex. "$Date$
", "$Header$
", "$Author$
", "$Log$
" etc.) Vid arkivering ändrar versionshanteringssystemet (VCN) dessa rader. Till exempel ändras "$Date$
" till "$Date: 2005/03/22 18:45:01 $
". Eftersom raden är olika i varje version av filen, skulle den kräva manuell interaktion under sammanfogningen.
KDiff3 erbjuder automatisk sammanfogning av dessa poster med alternativet Sammanfoga i inställningsdialogrutan. För enkla rader som matchar alternativet Reguljärt uttryck för automatisk sammanfogning i alla indatafiler väljer KDiff3 raden från B, eller om tillgänglig, den från C. (Dessutom är det nödvändigt att raderna i fråga radas upp i jämförelsen och att föregående rad inte innehåller en konflikt.) Den automatiska sammanfogningen kan antingen utföras omedelbart när sammanfogningen startas (aktivera alternativet Kör automatisk sammanfogning med reguljärt uttryck när sammanfogning startar) eller senare via menyalternativet → .
Automatisk sammanfogning för versionshanteringshistorik (också kallat "logg") stöds också. Automatisk sammanfogning av historik kan antingen utföras omedelbart när sammanfogningen startas genom att aktivera alternativet Sammanfogning enligt versionshanteringshistorik när sammanfogning startar under alternativet Sammanfoga i inställningsdialogrutan eller senare via menyalternativet → .
Oftast börjar versionshanteringshistoriken med en rad som innehåller nyckelordet "$Log$
". Den måste matchas av alternativet Reguljärt uttryck för historikens början:. KDiff3 detekterar vilka efterföljande rader som ingår i historiken genom att analysera de inledande tecknen som fanns före nyckelordet "$Log$
". Om samma "inledande kommentar" också finns på följande rader inkluderas de också i historiken.
Vid varje arkivering skriver VCS en unik rad som anger version, datum- och tidsinformation följd av rader med användarens kommentarer. Raderna utgör en historikpost. Historikavsnittet växer vid varje arkivering och de senaste posterna visas längst upp (efter historikens startrad).
När två utvecklare arkiverar grenar av en fil under parallell utveckling, kommer historiken för sammanfogning att innehålla flera poster som visas som konflikter under sammafogning av grenarna. Eftersom sammafogning av dem kan bli mycket tröttsam, erbjuder KDiff3 stöd för den med två möjliga strategier: Bara infoga historikinformationen från båda bidragsgivarna längst upp, eller sortera historikinformationen enligt en användardefinierad nyckel.
Metoden att bara infoga alla poster är enklast att ställa in. KDiff3 behöver bara en metod att detektera vilka rader som hör till en historikpost. De flesta VCS infogar en tom rad efter varje historikpost. Om det inte finns några andra tomma rader, är det ett tillräckligt villkor för KDiff3. Ange bara ett tomt Reguljärt uttryck för historikens början under alternativet Sammanfoga i inställningsdialogrutan. Om kriteriet med en tom rad inte är tillräckligt kan du ange ett reguljärt uttryck för att detektera historikpostens början.
Observera att KDiff3 tar bort duplicerade historikposter.Om en historikpost fanns flera gånger i en indatafils historik, förblir bara en post i utmatningen.
Om du vill sortera historiken måste du ange hur sorteringsnyckeln ska byggas. Använd parenteser som i Reguljärt uttryck för historikpostens början under alternativet Sammanfoga i inställningsdialogrutan för att gruppera delar av det reguljära uttrycket som senare ska användas i sorteringsnyckeln. Ange därefter Sorteringsnycklarnas ordning från historikpostens början med en lista av nummer som refererar till gruppens position i det reguljära uttrycket åtskilda av kommatecken ",".
Eftersom det inte är så enkelt att få det rätt omedelbart, kan du prova och förbättra det reguljära uttrycket och nyckelgenereringen i en särskild dialogruta genom att klicka på knappen .
Exempel: antag en historik som ser ut så här:
/************************************************************************** ** HISTORIK: $Log: \toms_sammanfogning_huvudvy\Mitt_program\kod\komplexalgoritm.cpp $ ** ** \head\integreringsgren_12 2 Apr 2001 10:45:41 tom ** Sammanfogade grenen simongren_15. ** ** \main\henry_felrättningsgren_7\1 30 Mar 2001 19:22:05 henry ** Förbättrade hastigheten för delrutinen omvandlaTill(). ** Fixade krasch. **************************************************************************/
Historikens inledande rad matchar det reguljära uttrycket ".*\$Log.*\$.*
". Därefter följer historikposterna.
Raden med nyckelordet "$Log$
" börjar med två "*" och därefter följer ett mellanslag. KDiff3 använder den första strängen utan blanktecken som "inledande kommentar" och antar att historiken slutar med den första raden utan denna inledande kommentar. I exemplet slutar den sista raden med en sträng som också börjar med två "*", men istället för ett mellanslag följer fler "*". Därför avslutar denna rad historiken.
Om sortering av historiken inte krävs kan det reguljära uttrycket för historikpostens början se ut så här. (Raden är delad i två eftersom den inte skulle få plats annars.)
\s*\\main\\\S+\s+[0-9]+ (Jan|Feb|Mar|Apr|Maj|Jun|Jul|Aug|Sep|Okt|Nov|Dec) [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s+.*
Om sortering av historiken inte krävs kan det reguljära uttrycket för historikpostens början se ut så här. (Raden är delad i två eftersom den inte skulle få plats annars.)
\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+.*
För detaljinformation om reguljära uttryck se Trolltechs dokumentation av reguljära uttryck. Observera att "\s
" (med ett litet "s
") matchar alla blanktecken och "\S
" (med ett stort "S
") matchar alla tecken som inte är blanktecken. I vårt exempel innehåller historikpostens början först versionsinformation med det reguljära uttrycket "\\main\\\S+
", datumet som består av dagen "[0-9]+
", månaden "(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
" och året "[0-9][0-9][0-9][0-9]
", tiden "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
" och till sist utvecklarens inloggningsnamn ".*
".
Observera att de "inledande kommentartecknen" (i exemplet "**
") redan har tagits bort av KDiff3 innan försöket att matcha, alltså börjar det reguljära uttrycket med att matcha ett eller flera blanktecken "\s*
". Eftersom kommentartecken kan skilja sig åt i varje fil (C/C++ använder t.ex. andra kommentartecken än ett Perl-skript), tar KDiff3 hand om de inledande kommentartecknen och du ska inte ange dem i det reguljära uttrycket.
Om du kräver sorterad historik måste sorteringsnyckeln beräknas. För att göra det måste relevanta delar i det reguljära uttrycket grupperas med parenteser. (De extra parenteserna kan också vara kvar även om historiksortering inaktiveras.)
\s*\\main\\(\S+)\s+([0-9]+) (Jan|Feb|Mar|Apr|Maj|Jun|Jul|Aug|Sep|Okt|Nov|Dec) ([0-9][0-9][0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9])\s+(.*)
Om du kräver sorterad historik måste sorteringsnyckeln beräknas. För att göra det måste relevanta delar i det reguljära uttrycket grupperas med parenteser. (De extra parenteserna kan också vara kvar även om historiksortering inaktiveras.)
\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+(.*)
Parenteserna innehåller nu 1
. versionsinformation, 2
. dag, 3
. månad, 4
. år, 5
. tid, 6
. namn. Men om vi vill sortera enligt datum och tid måste vi skapa en nyckel med elementen synliga i en annan ordning: Först året, följt av månad, dag, tid, versionsinformation och namn. Därför ska sorteringsnyckelns ordning som anges vara "4,3,2,5,1,6
".
Eftersom månadsnamn inte är bra att sortera enligt ("Apr
" skulle vara först) detekterar KDiff3 vilken ordning månadsnamnen anges och använder det numret istället ("Apr
" -> "04
"). Och om ett rent nummer hittas omvandlas det till ett fyrasiffrors värde med inledande nollor för sortering. Till sist blir den resulterande sorteringsnyckeln för den första historikpostens inledande rad:
2001 04 0002 10:45:41 integreringsgren_12 tom
För mer information, se också avsnittet Inställningar av sammanfoga.