blob: b911a64f33ef81c44409fab46c60f39a12741904 (
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#!/bin/bash
ODIR=pull-$$
RELATIVE_TO="master"
COMMIT_ID="HEAD"
PULL_URL="git://git.openembedded.org/openembedded-core-contrib"
WEB_URL_PREFIX="http://git.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h="
PREFIX="PATCH"
usage() {
CMD=$(basename $0)
cat <<EOM
Usage: $CMD [-h] [-o output_dir] [-m msg_body_file] [-s subject] [-r relative_to] [-i commit_id] -b contrib_branch
-b contrib_branch Branch-name in the $PULL_URL
-h Display this help message
-i commit_id Ending commit (default: HEAD)
-m msg_body_file The file containing a blurb to be inserted into the summary email
-o output_dir Specify the output directory for the messages (default: pull-PID)
-p prefix Use [prefix N/M] instead of [PATCH N/M] as the subject prefix
-r relative_to Starting commit (default: master)
-s subject The subject to be inserted into the summary email
Examples:
$CMD -b nitin/basic
$CMD -r distro/master -i nitin/distro -b nitin/distro
$CMD -r master -i misc -b nitin/misc -o pull-misc
$CMD -p "RFC PATCH" -b nitin/experimental
EOM
}
# Parse and validate arguments
while getopts "b:hi:m:o:p:r:s:" OPT; do
case $OPT in
b)
CONTRIB_BRANCH="$OPTARG"
;;
h)
usage
exit 0
;;
i)
COMMIT_ID="$OPTARG"
;;
m)
BODY="$OPTARG"
if [ ! -e "$BODY" ]; then
echo "ERROR: Body file does not exist"
exit 1
fi
;;
o)
ODIR="$OPTARG"
;;
p)
PREFIX="$OPTARG"
;;
r)
RELATIVE_TO="$OPTARG"
;;
s)
SUBJECT="$OPTARG"
;;
esac
done
if [ -z "$CONTRIB_BRANCH" ]; then
usage
exit 1
fi
# Perform a sanity test on the web URL. Issue a warning if it is not
# accessible, but do not abort as users may want to run offline.
WEB_URL="$WEB_URL_PREFIX$CONTRIB_BRANCH"
wget -q $WEB_URL -O /dev/null
if [ $? -ne 0 ]; then
echo "WARNING: Branch '$CONTRIB_BRANCH' was not found on the contrib git tree."
echo " Please check your contrib-branch parameter before sending."
echo ""
fi
if [ -e $ODIR ]; then
echo "ERROR: output directory $ODIR exists."
exit 1
fi
mkdir $ODIR
# Generate the patches and cover letter
git format-patch -M --subject-prefix="$PREFIX" -n -o $ODIR --thread=shallow --cover-letter $RELATIVE_TO..$COMMIT_ID > /dev/null
# Customize the cover letter
CL="$ODIR/0000-cover-letter.patch"
(cat <<EOM
Pull URL: $PULL_URL
Branch: $CONTRIB_BRANCH
Browse: $WEB_URL
Thanks,
$(git config user.name) <$(git config user.email)>
---
EOM
) | sed -i "/BLURB HERE/ r /dev/stdin" "$CL"
# If the user specified a message body, insert it into the cover letter and
# remove the BLURB token.
if [ -n "$BODY" ]; then
sed -i "/BLURB HERE/ r $BODY" "$CL"
sed -i "/BLURB HERE/ d" "$CL"
fi
# If the user specified a subject, replace the SUBJECT token with it.
if [ -n "$SUBJECT" ]; then
sed -i -e "s/\*\*\* SUBJECT HERE \*\*\*/$SUBJECT/" "$CL"
fi
# Generate report for user
cat <<EOM
The following patches have been prepared:
$(for PATCH in $(ls $ODIR/*); do echo " $PATCH"; done)
Review their content, especially the summary mail:
$CL
When you are satisfied, you can send them with:
send-pull-request -a -p $ODIR
EOM
|