LinuxForum.Fans
Тема

Как делать патчи?

Автор: yars 4 сообщений 1090 просмотров
#263464

Доброго времени всем! Вот такой вопрос возник... Главное, как собственно это делается, я понял, но не понял нюанс: вот есть, например, два каталога с исходниками, один с правлеными текстами, другой с оригиналами. Сделал я патч, но вот переносимым он не будет. Как быть? Системы контроля версий использовать?

#263465
"yars" написал:
. Сделал я патч, но  вот переносимым он не будет.

это почему?

"yars" написал:
Системы контроля версий использовать?

ну в общем, да... это почти от всего панацея...

#263467
Fat-Zer написал:
это почему?

Допустим, у нас есть такая структура каталогов:

text
/tmp/src1
/tmp/src2

Допустим, мы сделали изменения в одном из файлов в первом каталоге, натравили diff, получили патч. Если потом посмотреть в патч, то будет видно, что он получился привязанным к структуре каталогов. Вот это-то и послужило причиной появления темы. А без контроля версий не получится?

#263468
"yars" написал:
Допустим, мы сделали изменения в одном из файлов в первом каталоге, натравили diff, получили патч. Если потом посмотреть в патч, то будет видно, что он получился привязанным к структуре каталогов.

не совсем понял, но похоже man patch, внимание на ключик -p
[added]

text

alexander@goblin /tmp $ cat src1/1.c
#include <stdio.h>

int main(int argc, char **argv) { return 0; } alexander@goblin /tmp $ cat src2/1.c #include <stdio.h>

int main(int argc, char **argv) { printf("Hello world!"); return 0; } alexander@goblin /tmp $ diff -rc src{1,2} | tee src1-2.patch diff -rc src1/1.c src2/1.c *** src1/1.c 2012-07-07 23:17:56.822846190 +0400 --- src2/1.c 2012-07-07 23:19:35.808852144 +0400 *************** *** 1,5 **** --- 1,6 ---- #include <stdio.h>

int main(int argc, char **argv) { + printf("Hello world!"); return 0; } alexander@goblin /tmp $ cp -r src{1,3} alexander@goblin /tmp $ cd src3/ alexander@goblin /tmp/src3 $ cat 1.c #include <stdio.h>

int main(int argc, char **argv) { return 0; } alexander@goblin /tmp/src3 $ patch -rp1 <../src1-2.patch patching file 1.c alexander@goblin /tmp/src3 $ cat 1.c #include <stdio.h>

int main(int argc, char **argv) { printf("Hello world!"); return 0; }

Войдите или зарегистрируйтесь, чтобы ответить.