EnderUNIX Team.


EnderUNIX İpucu

Arkadaşıma gönder , Ana Sayfa

[ Genel ]

"Nasıl Patch Hazırlanır?" - Necati Ersen Şişeci - (2006-07-03 01:47:44)   [3389]

1.c dosyasi:

#include

main()
{
printf("Selam\n");
}


Biz dosyada degisiklik yapip patch cikartmak istiyoruz.
bu dosyayi 1.c.org olarak cp yapalim.
Sonra 1.c de degisiklik yapalim

1.c nin yeni hali


root@siseci[a]# cat 1.c
#include

main()
{
printf("Selam\n");
printf("Selam 2\n");
}

seklinde olsun.

Bu iki C kodu icin yaptigimiz yeni degisikligi eski C koduna uygulayacak patch cikartmak istersek diff komutunu kullanmamiz gerekecek.

Soyle

diff -ruN eskiDosya yeniDosya

Yani

root@siseci[a]# diff -ruN 1.c.org 1.c
--- 1.c.org Fri Jun 30 10:16:37 2006
+++ 1.c Fri Jun 30 10:18:05 2006
@@ -3,4 +3,5 @@
main()
{
printf("Selam\n");
+ printf("Selam 2\n");
}

seklinde.

@@ -3,4 +3,5 @@

ile belirtilen kisimdaki -3, dosyanin 3ncu satirindan itibaren gosterildigini yaziyor ve main ve { ve printf satirlarinda herhangi bir degisiklik olmamis.Fakat bu 3 satirin altina yeni bir printf satiri gelmis

+ printf("Selam 2\n");

Elle uygularken de bunu kullanacagiz yine. Kacinci satir oldugunu bulup, once degismemis satirlari kontrol edip eger degismemis olan satirlar dogru ise patch de belirtilen degisikligi yapacagiz.

Simdi 1.c dosyasini biraz daha degistirelim.

root@siseci# cat 1.c
#include

main()
{
printf("Selam 2\n");
}

bunun icin patch cikartirsak

root@siseci[a]# diff -ruN 1.c.org 1.c
--- 1.c.org Fri Jun 30 10:16:37 2006
+++ 1.c Fri Jun 30 10:19:43 2006
@@ -2,5 +2,5 @@

main()
{
- printf("Selam\n");
+ printf("Selam 2\n");
}

Burada da 2nci satirdan basliyor bos satir, main, { satirlari ayni
kaliyor, bu 3 satirdan sonra gelen printf("Selam\n") satiri - oldugu icin
siliniyor, ve + olan printf("Selam 2\n"); satiri ekleniyor.

root@siseci[a]# diff -ruN 1.c.org 1.c > 1.patch

ile patch i almis olduk.

root@siseci[a]# rm 1.c
root@siseci[a]# mv 1.c.org 1.c

yapip orjinal haline donelim.

root@siseci[a]# ls -al
total 8
drwxr-xr-x 2 root wheel 512 30 Haz 10:23 .
drwxrwxrwt 10 root wheel 512 30 Haz 10:15 ..
-rw-r--r-- 1 root wheel 51 30 Haz 10:16 1.c
-rw-r--r-- 1 root wheel 146 30 Haz 10:23 1.patch
root@siseci[a]# cat 1.c
#include

main()
{
printf("Selam\n");
}
root@siseci[a]# patch < 1.patch
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- 1.c.org Fri Jun 30 10:16:37 2006
|+++ 1.c Fri Jun 30 10:19:43 2006
--------------------------
Patching file 1.c using Plan A...
Hunk #1 succeeded at 2.
done
root@siseci[a]# cat 1.c
#include

main()
{
printf("Selam 2\n");
}

Seklinde yeni patch i uygulamis oluyoruz.

Arkadaşıma gönder , Ana Sayfa