Ero sivun ”Diff” versioiden välillä

Siirry navigaatioon Siirry hakuun
1 303 merkkiä lisätty ,  19. maaliskuuta 2016
ei muokkausyhteenvetoa
(perusteet)
 
Ei muokkausyhteenvetoa
 
(20 välissä olevaa versiota 12 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Diff on komentoriviohjelma, jolla voidaan vertailla kahta eri tiedostoa. Tavallisimpia käyttökohteita on esimerkiksi [[:Luokk:Ohjelmistokehitys|ohjelmistokehityksessä]] eri versioiden vertailu. Diffiä hyödynnetään esimerkiksi [[subversion]]-versionhallinnassa.
{{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
#include <stdio.h>
<source lang="C">
void main() {
#include <stdio.h>
  printf("Hello word");
void main() {
}
    printf("Hello word");
}
</source>
Ja
Ja
helllo2.c
hello2.c
#include <stdio.h>
<source lang="C">
int main() {
#include <stdio.h>
  printf("Hello world");
int main() {
  return 0;
    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 -u</tt> antaisi tulosteen
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.


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.


== 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]]


== Linkkejä ==
[[Luokka:Komentorivin perustyökalut]]
* FLUG:in [http://www.flug.fi/ohjeita/linux-ohjelmointi.html#diff Diff-ohje] Linux-ohjelmointioppaassa.
[[Luokka:Tiedostojen vertailua]]
 
[[Luokka:Komentorivi]]
[[Luokka:Ohjelmistokehitys]]

Navigointivalikko