Доброго времени всем! Вот такой вопрос возник... Главное, как собственно это делается, я понял, но не понял нюанс: вот есть, например, два каталога с исходниками, один с правлеными текстами, другой с оригиналами. Сделал я патч, но вот переносимым он не будет. Как быть? Системы контроля версий использовать?
Как делать патчи?
. Сделал я патч, но вот переносимым он не будет.
это почему?
Системы контроля версий использовать?
ну в общем, да... это почти от всего панацея...
это почему?
Допустим, у нас есть такая структура каталогов:
/tmp/src1
/tmp/src2Допустим, мы сделали изменения в одном из файлов в первом каталоге, натравили diff, получили патч. Если потом посмотреть в патч, то будет видно, что он получился привязанным к структуре каталогов. Вот это-то и послужило причиной появления темы. А без контроля версий не получится?
Допустим, мы сделали изменения в одном из файлов в первом каталоге, натравили diff, получили патч. Если потом посмотреть в патч, то будет видно, что он получился привязанным к структуре каталогов.
не совсем понял, но похоже man patch, внимание на ключик -p
[added]
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;
}