Spring til indhold

diff

Fra Wikipedia, den frie encyklopædi

Screenshot af brug af diff

Computerprogrammet diff er et UNIX-program, som bruges til at finde forskelle i filer. Hvis filerne ikke er i tekstformat, kan diff kun afgøre om filerne er forskellige. Hvis de der i mod indeholder tekst, kan diff vise forskellene i forskellige formater.

Standardformatet for diff indeholder de linjer, der skal fjernes med foranstillet < og de linjer, der skal tilføjers med foranstillet >. Desuden er der angivelse af, hvor linjerne skal tilføjes. Eksempel:

3c3
< Svaret er 43.
---
> Svaret er 42.
6c6
< Denne linje skal rettes.
---
> Denne linje skal ikke rettes.
8d7
< Denne linje skal slettes.

I den mere læsevenlige context-diff medtages nogle af de omkringsliggende linjer. Rettelser vises med !, tilføjelser med + og sletninger med -. Eksempel:

*** fil1.txt	2006-03-01 22:18:56.000000000 +0100
--- fil2.txt	2006-03-01 22:17:50.000000000 +0100
***************
*** 1,9 ****
  Her er en fil,
  der skal opdateres.
! Svaret er 43.
  Her kommer en blank linje.
 
! Denne linje skal rettes.
  Dette er fyld.
– Denne linje skal slettes.
  Dette er slutningen.
--- 1,8 ----
  Her er en fil,
  der skal opdateres.
! Svaret er 42.
  Her kommer en blank linje.
 
! Denne linje skal ikke rettes.
  Dette er fyld.
  Dette er slutningen.

Hvis der skal distribueres forskelle i mange filer, kan de bindes sammen i formatet "unified diff". Med samme filer som i det foregående ser det sådan ud:

--- fil1.txt	2006-03-01 22:18:56.000000000 +0100
+++ fil2.txt	2006-03-01 22:17:50.000000000 +0100
@@ -1,9 +1,8 @@
 Her er en fil,
 der skal opdateres.
-Svaret er 43.
+Svaret er 42.
 Her kommer en blank linje.

-Denne linje skal rettes.
+Denne linje skal ikke rettes.
 Dette er fyld.
-Denne linje skal slettes.
 Dette er slutningen.

Programmet kan også vise forskellene i et format, der kan bruges som input til ed, men dette format indeholder ikke nok information til at man kan "gå baglæns" og i eksemplet finde fil1.txt ud fra fil2.txt.

En fil, der indeholder output fra diff, kaldes en patch. Opdateringen af filerne klares med programmet patch. Versionsstyringssystemet CVS bruger diff til at vise forskelle mellem versioner af en fil.