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