Ero sivun ”Diff” versioiden välillä
p (Botti vaihtoi luokan Luokka:Ohjelmistokehitys) |
Pb (keskustelu | muokkaukset) p (luokka) |
||
Rivi 64: | Rivi 64: | ||
* FLUG:in [http://www.flug.fi/ohjeita/linux-ohjelmointi.html#diff Diff-ohje] Linux-ohjelmointioppaassa. | * FLUG:in [http://www.flug.fi/ohjeita/linux-ohjelmointi.html#diff Diff-ohje] Linux-ohjelmointioppaassa. | ||
[[Luokka: | [[Luokka:Komentorivin perustyökalut]] | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] |
Versio 10. toukokuuta 2007 kello 16.47
Diff on komentoriviohjelma, jolla voidaan vertailla kahta eri tiedostoa. Tavallisimpia käyttökohteita on esimerkiksi ohjelmistokehityksessä eri versioiden vertailu. Lisäksi diffiä hyödynnetään mm. korjauspaketeissa ja versionhallintaohjelmissa
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.