Ero sivun ”Patch” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p (fix)
p (kh, muotoilua)
Rivi 1: Rivi 1:
Patch on [[:Luokka:Kehitystyökalut|ohjelmistokehityksessä]] käytetty työkalu, jolla voidaan päivittää tiedosto uuteen versioon jos saatavilla on uuden ja vanhan version välinen [[diff]]-tiedosto.
Patch on [[:Luokka:Kehitystyökalut|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ö ==
== Käyttö ==
Esimerkiksi [[diff]]-artikkelissa mainitussa esimerkissä meillä on seuraavanlainen hello.c-tiedosto:
Esimerkiksi [[diff]]-artikkelissa mainitussa esimerkissä meillä on seuraavanlainen <tt>hello.c</tt>-tiedosto:
  #include <stdio.h>
  #include <stdio.h>
  void main() {
  void main() {
   printf("Hello word");
   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:
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
  +++ hello2.c      2006-04-07 10:12:47.000000000 +0000
  +++ hello2.c      2006-04-07 10:12:47.000000000 +0000
Rivi 18: Rivi 18:
  + return 0;
  + return 0;
  }
  }
Kun nämä tiedostot nyt ovat samassa hakemistossa, voidaan hello.c ''patchata'' uuteen 2-versioon yksinkertaisesti patchilla:
Kun nämä tiedostot nyt ovat samassa hakemistossa, voidaan <tt>hello.c</tt> ''patchata'' uuteen 2-versioon yksinkertaisesti patchilla:
  patch -p0 < hello1to2.diff
  patch -p0 < hello1to2.diff
Jonka jälkeen hello.c:n sisältö olisi seuraava:
Jonka jälkeen <tt>hello.c</tt>:n sisältö olisi seuraava:
  #include <stdio.h>
  #include <stdio.h>
  int main() {
  int main() {
Rivi 26: Rivi 26:
   return 0;
   return 0;
  }
  }
Aivan kuten sen kuuluukin olla. Komennossa valitsin -p0 kertoo diffille, että patchattavat tiedostot (tai tässä tapauksessa yksi tiedosto) on samassa hakemistossa kuin patch-tiedosto. Jos patchissa viitattaisiin joissain hakemistoissa oleviin tiedostoihin, esimerkiksi tiedostoon hello/hello.c, voisimme käskeä patchia "unohtamaan" yhden hakemistoista 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.


Huomaa myös, että patch ei lue patch-tiedoston sisältöä, vaan se välitetään sille syötteenä <-[[Komentorivin perusteet|ohjausmerkin]] avulla.
Huomaa myös, että patch ei lue patch-tiedoston sisältöä, vaan se välitetään sille syötteenä <-[[Komentorivin perusteet|ohjausmerkin]] avulla.

Versio 23. syyskuuta 2007 kello 01.44

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ö

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.

Katso myös