blob: 7bf0a319e27331495747c2bab603c07b8ed00053 (
plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#! /bin/bash
# TODO Consider rewrite in perl/python to make this a bit less crappy
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PATCHES_DIR=${DIR}/patches
LAST_REVISION_FILE=${DIR}/last-merged-ioq3-revision
LAST_REVISION_TEMP_FILE=${LAST_REVISION_FILE}.temp
if [ -f ${LAST_REVISION_TEMP_FILE} ]
then
LAST_REVISION=`cat ${LAST_REVISION_TEMP_FILE}`
else
LAST_REVISION=`cat ${LAST_REVISION_FILE}`
fi
set -f
# Things that exist in ioq3 which we don't want
EXCLUSIONS="BUGS ChangeLog README ./*.txt
NOTTODO TODO misc/* *.mak src/cgame/*
src/game/* src/ui/* src/q3_ui/* src/botlib/* ui/*"
EXCLUDE_PARAMETERS=""
for EXCLUSION in ${EXCLUSIONS}
do
EXCLUDE_PARAMETERS+="--exclude=${EXCLUSION} "
done
set +f
PATCHES=`ls ${PATCHES_DIR}/*.patch 2> /dev/null`
if [ -z "${PATCHES}" ]
then
echo "Fetching and generating patches..."
git fetch https://github.com/ioquake/ioq3.git
mkdir -p ${PATCHES_DIR}
git format-patch -o ${PATCHES_DIR} ${LAST_REVISION}..FETCH_HEAD
fi
if [ -d ".git/rebase-apply" ]
then
echo "Failed patch detected."
git diff --quiet --exit-code
if [ "$?" -ne 0 ]
then
echo "Unstaged changes present; git add any that are pending:"
git status
exit 1
fi
PATCH=`ls ${PATCHES_DIR}/*.patch | head -n 1`
SHA=`cat ${PATCH} | head -n 1 | awk '{print $2;}'`
echo "Processing ${SHA} ${PATCH}..."
DIFF=`git diff --cached`
if [ -z "${DIFF}" ]
then
echo "Patch does nothing; skipping."
read -p "Confirm skip? "
git am --skip
else
read -p "Confirm resolve? "
git am --resolved
fi
if [ "$?" -ne 0 ]
then
echo "Patch failed to apply."
exit $?
fi
echo ${SHA} > ${LAST_REVISION_TEMP_FILE}
rm ${PATCH}
fi
PATCHES=`ls ${PATCHES_DIR}/*.patch 2> /dev/null`
if [ -n "${PATCHES}" ]
then
for PATCH in ${PATCHES}
do
SHA=`cat ${PATCH} | head -n 1 | awk '{print $2;}'`
echo "Processing ${SHA} ${PATCH}..."
cat ${PATCH} | sed -e 's/\([ab]\)\/code\//\1\/src\//g' | \
git am ${EXCLUDE_PARAMETERS} --quiet --3way
if [ "$?" -ne 0 ]
then
echo "Patch failed to apply."
git status
exit $?
fi
echo ${SHA} > ${LAST_REVISION_TEMP_FILE}
rm ${PATCH}
done
else
echo "Nothing to merge."
fi
# Finished merging so update the last revision marker
if [ -f ${LAST_REVISION_TEMP_FILE} ]
then
diff ${LAST_REVISION_FILE} ${LAST_REVISION_TEMP_FILE} &> /dev/null
if [ "$?" -ne 0 ]
then
mv ${LAST_REVISION_TEMP_FILE} ${LAST_REVISION_FILE}
LAST_REVISION=`cat ${LAST_REVISION_FILE}`
git add ${LAST_REVISION_FILE}
git commit -m "Merged ioq3 ${LAST_REVISION}"
fi
fi
|