Ero sivun ”Diff” versioiden välillä
Siirry navigaatioon
Siirry hakuun
ei muokkausyhteenvetoa
(hakemistojen vertailu) |
Ei muokkausyhteenvetoa |
||
(19 välissä olevaa versiota 12 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}} | |||
'''diff''' on [[komentorivi]]ohjelma, jolla voidaan vertailla kahta eri tiedostoa. Tavallisimpia käyttökohteita on esimerkiksi [[:Luokka:Kehitystyökalut|ohjelmistokehityksessä]] eri versioiden vertailu. Lisäksi diffiä hyödynnetään mm. [[patch|korjauspaketeissa]], [[versionhallintajärjestelmä|versionhallintaohjelmissa]] sekä [[asetustiedostojen perusteet|asetustiedostojen]] ja ylipäätänsä tekstimuotoisten tiedostojen vertailussa. | |||
== Peruskäyttö == | diff perustuu rivien vertailuun, joten se ei sovellu dataan, jossa rivit ovat hyvin pitkiä tai missä rivien järjestys, rivinvaihdot tai rivien sisältö vaihtuu vertailun kannalta mielivaltaisesti. | ||
==Peruskäyttö== | |||
Tehdään aluksi kaksi [[C]]-kielistä tiedostoa, esimerkiksi | Tehdään aluksi kaksi [[C]]-kielistä tiedostoa, esimerkiksi | ||
hello.c | hello.c | ||
<source lang="C"> | |||
#include <stdio.h> | |||
void main() { | |||
printf("Hello word"); | |||
} | |||
</source> | |||
Ja | Ja | ||
hello2.c | |||
<source lang="C"> | |||
#include <stdio.h> | |||
int main() { | |||
printf("Hello world"); | |||
return 0; | |||
} | |||
</source> | |||
Esimerkissä uuteen hello2.c-versioon korjattiin kirjoitusvirhe rivillä 3 ja lisättiin funktio palauttamaan 0. Näitä voitaisiin nyt vertailla komennolla | 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 | diff hello.c hello2.c | ||
Rivi 27: | Rivi 34: | ||
< 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. | < 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 <tt>diff hello.c hello2.c | Vivulla -u diffin tulosteen saa monipuolisemmaksi ja selkeämmäksi. Esimerkkitapauksessamme <tt>diff -u hello.c hello2.c</tt> antaisi tulosteen | ||
--- hello.c 2006-04-07 10:05:08.000000000 +0000 | --- hello.c 2006-04-07 10:05:08.000000000 +0000 | ||
+++ hello2.c 2006-04-07 10:12:47.000000000 +0000 | +++ hello2.c 2006-04-07 10:12:47.000000000 +0000 | ||
Rivi 40: | Rivi 47: | ||
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. | ||
== Hakemistojen vertailu == | 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== | |||
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. | 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 == | ==Katso myös== | ||
*[[Patch]] | *[[Patch]] | ||
*[[TkDiff]] on graafinen tiedostojen ja kansioiden vertailuun käytettävä apuohjelma. | |||
*[[Meld]] on graafinen tiedostojen ja kansioiden vertailuun käytettävä apuohjelma. | |||
*[[Beyond Compare]] | |||
[[Luokka:Komentorivin perustyökalut]] | |||
[[Luokka:Tiedostojen vertailua]] | |||
[[Luokka: | |||
[[Luokka: |