Dobrodošli na wiki srpske Slackware zajednice. Za izmenu sadržaja je neophodno registrovati nalog. Pre uređivanja ili dodavanja sadržaja poigrajte se sa wiki sintaksom u igralištu.

Imamo c source file koji ne može da se kompajlira (hello.c)

#include <stdio.h>

int main(void) {
    printf("Hello, %s\n", name);
    return 0;
}

Da bi bilo moguće kompajlirati ga, potrebno je deklarisati promenljivu name tipa char:

char name[] = "ime";

Prvi fajl kopiramo kao hello.c_orig, i napravimo izmene u postojećem hello.c:

#include <stdio.h>

int main(void) {    
  char name[] = "ime";    
  printf("Hello, %s\n", name);  
  return 0;
}

Sledeće što uradimo je:

# diff -urN hello.c_orig hello.c >> fix.patch

I dobijamo file fix.patch koji izgleda ovako:

--- hello.c_orig        2010-06-29 22:20:06.654030638 +0200
+++ hello.c     2010-06-29 22:23:23.330028918 +0200
@@ -1,6 +1,7 @@  
#include <stdio.h>    

int main(void) {  
+    char name[] = "ime";      
     printf("Hello, %s\n", name);
     return 0;
   }
}

Dopuna

Za pokretanje diff-a nad pojedinačnim fajlovima r i N opcije su nepotrebne:

diff -u file1 file2

Mada će patch program raditi ok i sa patchevima koji nisu u GNU „unifikovanom formatu“:

diff file1 file2

Unifikovani format (-u opcija) je mnogo pregledniji i zato se najčešće koristi. Razlika? Vidi se jednostavno na hello world primeru:

5c5
<    puts("Zdravo!");
---
>    printf("Zdravo!\n");

Unifikovani format stavlja promenu u kontekst:

--- hello.c.orig   2012-02-16 10:26:21.158000102 +0100
+++ hello.c   2012-02-16 10:26:37.696000102 +0100
@@ -2,6 +2,6 @@
 
 int main(void)
 {
-   puts("Zdravo!");
+   printf("Zdravo!\n");
    return 0;
 }

Ovo ga čini ne samo lakšim za editovanje u tekst editoru, nego i za ručno pečovanje ukoliko bude potrebno.

Opcije N i r se koriste za rekurzivno poređenje direktorijuma. „r“ govori diff komandi da poredi i sadržaj direktorijuma i poddirektorijuma. „N“ govori da se u poređenje uključe i novo kreirani fajlovi, koji ne postoje u jednom od direktorijuma koji se poredi. Ovo se obično upari sa opcijom „a“ koja diff komandi govori da sve fajlove posmatra kao ascii tekst.

Rekurzivno poređenje bi izgledalo ovako:

diff -Naur somedir.org somedir

Da bi smo kreirali patch, samo preusmerimo izlaz diff komande u tekstualni fajl:

diff -Naur somedir.orig somedir > someprog-bugfix.patch

QR Code
QR Code uputstva:kako_jednostavno_kreirati_patch (generated for current page)