forked from Hubbitus/shell.scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmake_patch
executable file
·71 lines (64 loc) · 2.99 KB
/
make_patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash
#Создание и прикладывание патчей. Личный опыт. (http://volgograd.lug.ru/wiki/TarasAblamsky/articles/DiffAndPatch)
# Создание:
#1. разворачивам дерево исходников в рабочий каталог. Например /var/tmp/sources
#2. работаем с файлами, вносим изменения, отлаживаем
#3. удаляем резервные копии (find -name "*~" -exec rm -f {} \;)
#4. разворачиваем оригинальное дерево исходников в директорию рядом, Например /var/tmp/sources.orig
#5. делаем патч: cd /var/tmp; diff -k.orig -Naur sources > my-cool-feature.patch
#6. патч my-cool-feature.patch готов
# Прикладывание:
#1. разворачивам дерево исходников в рабочий каталог. Например /var/tmp/sources
#2. копируем патч в каталог с исходниками (cp my-cool-feature.patch /var/tmp/sources/)
#3. прикладывам патч: cd /var/tmp/sources; patch -p1 -s < my-cool-feature.patch
#4. исходники пропатчены
################################
#$1 - source-dir, ИЗМЕНЕННОЕ
#$2 - Имя файла-патча
#$3 - суффикс оригинальных исходников, если не задан, то .orig
suff='.orig'
orig_dir=''
if [ "$1" == "" ]
then
echo Не задана директория source, которую обрабатывать! Завершаю работу.
exit 1
else
if [ "$2" == "" ]
then
echo "Не задано имя выходного файла-патча! Завершаю работу." 1>&2
exit 2
else
if [ "$3" == "" ]
then
if [ ! -f $1$suff ] && [ ! -d $1$suff ]
then
echo Не задан суффикс директории-оригинала.
echo "Директория(файл) поумолчанию - $1$suff тоже не найдена! Завершаю работу." 1>&2
exit 3
else
orig_dir="$1$suff"
fi
else
if [ -d "$1$3" ]
then
orig_dir="$1$3"
else
if [ -d "$3" -o -f "$3" ]
then
echo "'$3' задана директория(файл) а не суффикс, используем ее." 1>&2
orig_dir="$3"
else
echo "Оригинальная директория не найдена. Завершаю работу." 1>&2
exit 4
fi
fi
fi
fi
fi
#diff -k$suff -Naur $1 > $2
#echo diff -NaurEbBH $addon_diff_options $orig_dir $1
#set -x
# Eval to allow in $addon_diff_options any options including arguments with spaces in quotes.
# see http://www.linuxquestions.org/questions/programming-9/bash-generating-a-string-containing-options-and-using-with-kdialog-648873/
# But -u do NOT overrided by -U<n> and uses 3 lines of context. Futhermore, second -U<n> also do not have any effect :(
eval diff ${DIFF_OPTIONS:-'-NurEbBH'} $addon_diff_options $orig_dir $1 > $2