Imamo c source file koji ne može da se kompajlira (hello.c)
#include
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
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
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