Movatterモバイル変換


[0]ホーム

URL:


Siirry sisältöön
Wikipedia
Haku

Diff

Wikipediasta

diff onUNIXiin kuuluva ohjelma, joka vertailee kahta tiedostoa ja antaa tulokseksimuutostiedoston.[1] Vertailu kahden version välillä tehdään riveittäin. Oletuksena diff huomioi kaikki muutokset tiedostoon, mukaan lukien muutoksettyhjemerkeissä, mutta tarvittaessa diff-käskyn voi komentaa olemaan huomioimatta muutoksia tyhjemerkkien määrässä.

patch on diffiin liittyvä työkalu, joka tuottaa tiedostosta uuden version, kun lähtötietoina on muutostiedosto ja alkuperäinen versio. patch osaa tehdä muutostiedoston kuvaaman muutoksen myös käänteisesti; uusi versio ja muutostiedosto alkuperäisestä uudempaan versioon tuottavat alkuperäisen version.

diffin tuottamaatiedostomuotoa käytetään lähes jokaisessaversionhallintajärjestelmässä joka on suunnattu ohjelmointiin UNIX-ympäristössä.

Historia

[muokkaa |muokkaa wikitekstiä]

Ohjelma oli mukana ainakin jo 1974 julkaistussa Unixin versiossa 5. Tämä ohjelma perustuu Harold S. Stonen algoritmiin.[2]

Ohjelman käyttämää algoritmia kutsutaanHunt–McIlroy algoritmiksi vuonna 1976 julkaistun version kehittäjienJ. W. Huntin jaM. D. McIlroyn mukaan.[3][4]

diffin avulla voitiin luodaedit scriptejä, jotka sisältävät ohjauskomentojaed taiex-editoreille, joilla muutokset voi yhdistää alkuperäiseen ohjelmaan. Tämä käyttö on myöhemmän patch-ohjelman ansiosta nykyisin turhaa.[5][6]

Vuonna 1984Larry Wall julkaisti uutisryhmissä mod.sources ja net.sourcespatch-ohjelman,[7] joka osaa yhdistää diffin tulostuksen alkuperäiseen tekstiin.

Diff kuuluu Unix-työkaluohjelmat määrittäviin standardeihin. Se oli mukanaX/Open Portability Guidessa 1987, POSIX.1-2001 lisäsi Context mode -diffin ja POSIX.1-2008 Unified diffin.

Esimerkit

[muokkaa |muokkaa wikitekstiä]

Oletusmuoto

[muokkaa |muokkaa wikitekstiä]

Oletetaan, että on kaksi tiedostoaa.txt jab.txt Oletusvertailu komennolladiff a.txt b.txt voisi tuottaa:

1c1< heippa---> moikka

.. jossa näytetään, että ensimmäisellä rivillä on muutettu sana toiseksi.

Kulmanuolia käyttävä tuloste on alkuperäinen vuonna 1976 julkaistusta versiosta.[3]

Kontekstimuoto

[muokkaa |muokkaa wikitekstiä]

Kontekstimuoto-c lisää tulostemuotoon muutosta ympäröiviä (edeltäviä tai seuraavia) rivejä.

*** a.txt2019-04-30 10:13:40.839139283 +0300--- b.txt2019-04-30 10:00:40.114513648 +0300****************** 1,2 ****! heippa  tekstiä--- 1,2 ----! moikka  tekstiä

Unified diff

[muokkaa |muokkaa wikitekstiä]

Kahden tiedoston vertailudiff -u tiedosto1 tiedosto2 käskyllä voisi antaa tällaisen tulostuksen:

 --- tiedosto1   2006-05-01 12:01:35.000000000 +0300 +++ tiedosto2   2006-05-01 12:02:00.000000000 +0300 @@ -1,4 +1,4 @@  Evoluution mekanismeja ovat muun muassa luonnonvalinta, mutaatiot ja -migraatio.Teorian mukaan luonnonvalinta johtaa populaation parempaan  +migraatio. Teorian mukaan luonnonvalinta johtaa populaation parempaan   sopeutumiseen ympäristöönsä, sillä menestyneimmistä yksilöistä tulee   lopulta vallitseva tyyppi populaatiossa tehokkaamman lisääntymisen myötä.

Tulostuksesta nähdään, että tiedostojen välillä oleva ero on kirjoitusvirheen korjaus (- ja + alkuiset rivit). Tässä käytettiin-u-vipua, joka luo yhdistetyn tulosteen. Tämä muoto on laajempi ja sisältää muutaman rivin ennen ja jälkeen muutetun rivin.

Wayne Davisonin kehittämä-u muoto on peräisinGNU diff -toteutuksesta ja vie vähemmän tilaa kuin aikaisemmin kehitetty kontekstimuoto-c.[1] Sama muoto on lisätty myös muihin diff-ohjelman toteutuksiin.[1]

Jos käyttäjällä on vanha versio tiedostosta hallussaan ja hän saa muutostiedoston kohti uudempaa, voi hän käyttääpatch-käskyä tuottamaan uudemman version:

 # patch tiedosto1 < muutostiedosto patching file tiedosto1

Minkä jälkeen tiedosto1 on sama kuin tiedosto2 (edellisen esimerkin mukaan).

Hakemistovertailu

[muokkaa |muokkaa wikitekstiä]

Hakemistojen vertailuun tarkoitettu-r muoto on peräisin ohjelmanBSD-toteutuksesta.[1]

Katso myös

[muokkaa |muokkaa wikitekstiä]

Lähteet

[muokkaa |muokkaa wikitekstiä]
  1. abcddiff - compare two files The Open Group. Viitattu 30.4.2019. (englanniksi)
  2. https://minnie.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s1/diff1.c
  3. abJ. W. Hunt & M. D. McIlroy: An Algorithm for Differential File Comparison (PDF) (Skannattu vuoden 1976 julkaistusta Bell Laboratories Computing Science Technical Report #41) 1976. Bell Labs. Viitattu 30.4.2019. (englanniksi)
  4. M. Douglas McIlroy: A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986 (PDF) cs.dartmouth.edu. Viitattu 6.9.2019. (englanniksi)
  5. GNU diffutils § 2.5.1 ed Scriptshttps://www.gnu.org/software/diffutils/manual/html_node/ed-Scripts.html
  6. Unix Power Tools, O'Reilly § 28.9 ex Scripts Built by diff docstore.mik.ua/orelly/unix/upt/ch28_09.htm
  7. https://groups.google.com/g/net.sources/c/qtfVio1sSHs/m/G0cPT5HFDFcJ

Aiheesta muualla

[muokkaa |muokkaa wikitekstiä]
Noudettu kohteesta ”https://fi.wikipedia.org/w/index.php?title=Diff&oldid=23572485
Luokat:

[8]ページ先頭

©2009-2026 Movatter.jp