Ero sivun ”Diff” versioiden välillä
(hakemistojen vertailu) |
Ei muokkausyhteenvetoa |
||
Rivi 9: | Rivi 9: | ||
} | } | ||
Ja | Ja | ||
hello2.c | |||
#include <stdio.h> | #include <stdio.h> | ||
int main() { | int main() { | ||
Rivi 39: | Rivi 39: | ||
} | } | ||
Aluksi nähdään tiedostojen nimet ja niiden viimeiset muokkausajat. Varsinainen tuloste on selkeä, + rivin edessä tarkoittaa lisättyä riviä ja - poistettua. Nyt diff näyttää myös muutaman rivin muutoskohdan ympäriltä mikä selkeyttää tulostetta. | Aluksi nähdään tiedostojen nimet ja niiden viimeiset muokkausajat. Varsinainen tuloste on selkeä, + rivin edessä tarkoittaa lisättyä riviä ja - poistettua. Nyt diff näyttää myös muutaman rivin muutoskohdan ympäriltä mikä selkeyttää tulostetta. | ||
Joskus C-tiedostojen muutokset halutaan yhdistää siten että valinta versioiden välillä tapahtuu käännösvaiheessa. | |||
<tt>diff -D VER_2_00 hello.c hello2.c >hello_molemmat.c </tt> yhdistää versiot siten että kumpikin versio saadaan halutessa aikaan lisäämällä tarvittaessa -D VER_2_00 valitsin. | |||
#include <stdio.h> | |||
#ifndef VER_2_00 | |||
void main() { | |||
printf("Hello word"); | |||
#else /* VER_2_00 */ | |||
int main() { | |||
printf("Hello world"); | |||
return 0; | |||
#endif /* VER_2_00 */ | |||
} | |||
== Hakemistojen vertailu == | == Hakemistojen vertailu == |
Versio 9. huhtikuuta 2006 kello 12.53
Diff on komentoriviohjelma, jolla voidaan vertailla kahta eri tiedostoa. Tavallisimpia käyttökohteita on esimerkiksi ohjelmistokehityksessä eri versioiden vertailu. Diffiä hyödynnetään esimerkiksi subversion-versionhallinnassa.
Peruskäyttö
Tehdään aluksi kaksi C-kielistä tiedostoa, esimerkiksi hello.c
#include <stdio.h> void main() { printf("Hello word"); }
Ja hello2.c
#include <stdio.h> int main() { printf("Hello world"); return 0; }
Esimerkissä uuteen hello2.c-versioon korjattiin kirjoitusvirhe rivillä 3 ja lisättiin funktio palauttamaan 0. Näitä voitaisiin nyt vertailla komennolla
diff hello.c hello2.c
Diffin tuloste olisi seuraavanlainen
2,3c2,4 < void main() { < printf("Hello word"); --- > int main() { > printf("Hello world"); > return 0;
< tarkoittaa, että rivi poistui ja > tarkoittaa uutta riviä. Tulosteesta nähdään että alkuperäisen tiedoston rivit 2-3 korvaantuivat viivan alla olevilla uusilla riveillä 2-4.
Vivulla -u diffin tulosteen saa monipuolisemmaksi ja selkeämmäksi. Esimerkkitapauksessamme diff hello.c hello2.c -u antaisi tulosteen
--- hello.c 2006-04-07 10:05:08.000000000 +0000 +++ hello2.c 2006-04-07 10:12:47.000000000 +0000 @@ -1,5 +1,6 @@ #include <stdio.h> -void main() { - printf("Hello word"); +int main() { + printf("Hello world"); + return 0; }
Aluksi nähdään tiedostojen nimet ja niiden viimeiset muokkausajat. Varsinainen tuloste on selkeä, + rivin edessä tarkoittaa lisättyä riviä ja - poistettua. Nyt diff näyttää myös muutaman rivin muutoskohdan ympäriltä mikä selkeyttää tulostetta.
Joskus C-tiedostojen muutokset halutaan yhdistää siten että valinta versioiden välillä tapahtuu käännösvaiheessa. diff -D VER_2_00 hello.c hello2.c >hello_molemmat.c yhdistää versiot siten että kumpikin versio saadaan halutessa aikaan lisäämällä tarvittaessa -D VER_2_00 valitsin.
#include <stdio.h> #ifndef VER_2_00 void main() { printf("Hello word"); #else /* VER_2_00 */ int main() { printf("Hello world"); return 0; #endif /* VER_2_00 */ }
Hakemistojen vertailu
Diff osaa yksittäisten tiedostojen lisäksi vertailla myös kokonaisia hakemistoja. Tällöin käytetään vipua -r (recursive). Hakemistoja vertaillessa diff käy läpi kaikki hakemistojen tiedostot myös alihakemistoista.
Katso myös
Linkkejä
- FLUG:in Diff-ohje Linux-ohjelmointioppaassa.