Ero sivun ”Patch” versioiden välillä
Ei muokkausyhteenvetoa |
p (<syntaxhighlight>) |
||
(3 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
Rivi 4: | Rivi 4: | ||
| kuva= | | kuva= | ||
| kuvateksti= | | kuvateksti= | ||
| lisenssi=[[ | | lisenssi=[[GPLv3+]] | ||
| käyttöliittymä=teksti | | käyttöliittymä=teksti | ||
| kotisivu=[https://savannah.gnu.org/projects/patch/ savannah.gnu.org/projects/patch] | | kotisivu=[https://savannah.gnu.org/projects/patch/ savannah.gnu.org/projects/patch] | ||
Rivi 13: | Rivi 13: | ||
==Käyttö== | ==Käyttö== | ||
Esimerkiksi [[diff]]-artikkelissa mainitussa esimerkissä meillä on seuraavanlainen <tt>hello.c</tt>-tiedosto: | Esimerkiksi [[diff]]-artikkelissa mainitussa esimerkissä meillä on seuraavanlainen <tt>hello.c</tt>-tiedosto: | ||
<syntaxhighlight lang="C"> | |||
#include <stdio.h> | |||
void main() { | |||
printf("Hello word"); | |||
} | |||
</syntaxhighlight> | |||
Lisäksi sitä on vertailtu tiedostoon <tt>hello2.c</tt> komennolla <tt>diff -u hello.c hello2.c > hello1to2.diff</tt> ja saatu seuraavanlainen sisältö tiedostoon <tt>hello1to2.diff</tt>: | Lisäksi sitä on vertailtu tiedostoon <tt>hello2.c</tt> komennolla <tt>diff -u hello.c hello2.c > hello1to2.diff</tt> ja saatu seuraavanlainen sisältö tiedostoon <tt>hello1to2.diff</tt>: | ||
--- hello.c 2006-04-07 10:05:08.000000000 +0000 | --- hello.c 2006-04-07 10:05:08.000000000 +0000 | ||
Rivi 31: | Rivi 33: | ||
patch -p0 < hello1to2.diff | patch -p0 < hello1to2.diff | ||
Jonka jälkeen <tt>hello.c</tt>:n sisältö olisi seuraava: | Jonka jälkeen <tt>hello.c</tt>:n sisältö olisi seuraava: | ||
<syntaxhighlight lang="C"> | |||
#include <stdio.h> | |||
int main() { | |||
printf("Hello world"); | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
Aivan kuten sen kuuluukin olla. Komennossa valitsin -p0 kertoo diffille, että ''patchattavat'' tiedostot (tai tässä tapauksessa yksi tiedosto) ovat samassa hakemistossa kuin patch-tiedosto. Jos patchissa viitattaisiin joissain hakemistoissa oleviin tiedostoihin, esimerkiksi tiedostoon hello/hello.c, voisimme käskeä patchia jättämään yhden hakemistoista huomiotta vivulla -p1. Tämä on hyödyllinen etenkin jos hakemistojen nimet muuttuvat. | Aivan kuten sen kuuluukin olla. Komennossa valitsin -p0 kertoo diffille, että ''patchattavat'' tiedostot (tai tässä tapauksessa yksi tiedosto) ovat samassa hakemistossa kuin patch-tiedosto. Jos patchissa viitattaisiin joissain hakemistoissa oleviin tiedostoihin, esimerkiksi tiedostoon hello/hello.c, voisimme käskeä patchia jättämään yhden hakemistoista huomiotta vivulla -p1. Tämä on hyödyllinen etenkin jos hakemistojen nimet muuttuvat. | ||
Nykyinen versio 18. helmikuuta 2022 kello 09.58
GNU patch | |
---|---|
Käyttöliittymä | teksti |
Lisenssi | GPLv3+ |
Kotisivu | savannah.gnu.org/projects/patch |
patch on ohjelmistokehityksessä käytetty työkalu, jolla voidaan päivittää tiedosto uuteen versioon jos saatavilla on uuden ja vanhan version erot sisältävä diff-tiedosto.
Käyttö[muokkaa]
Esimerkiksi diff-artikkelissa mainitussa esimerkissä meillä on seuraavanlainen hello.c-tiedosto:
#include <stdio.h>
void main() {
printf("Hello word");
}
Lisäksi sitä on vertailtu tiedostoon hello2.c komennolla diff -u hello.c hello2.c > hello1to2.diff ja saatu seuraavanlainen sisältö tiedostoon hello1to2.diff:
--- 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; }
Kun nämä tiedostot nyt ovat samassa hakemistossa, voidaan hello.c patchata uuteen 2-versioon yksinkertaisesti patchilla:
patch -p0 < hello1to2.diff
Jonka jälkeen hello.c:n sisältö olisi seuraava:
#include <stdio.h>
int main() {
printf("Hello world");
return 0;
}
Aivan kuten sen kuuluukin olla. Komennossa valitsin -p0 kertoo diffille, että patchattavat tiedostot (tai tässä tapauksessa yksi tiedosto) ovat samassa hakemistossa kuin patch-tiedosto. Jos patchissa viitattaisiin joissain hakemistoissa oleviin tiedostoihin, esimerkiksi tiedostoon hello/hello.c, voisimme käskeä patchia jättämään yhden hakemistoista huomiotta vivulla -p1. Tämä on hyödyllinen etenkin jos hakemistojen nimet muuttuvat.
Huomaa myös, että patch ei lue patch-tiedoston sisältöä, vaan se välitetään sille syötteenä <-ohjausmerkin avulla.