Meta/Reintegrate: allow applying cocci transformation
Junio C Hamano committed
Oct 23, 2018 at 16:01 UTC
f4fe00f88755d0f4e4468a6ad20bc9111a79d03b
1 file changed
+32
-2
Reintegrate
+32
-2
@@ -1,6 +1,9 @@
1
#!/bin/sh
2
3
-accept_rerere="--rerere-autoupdate" generate=no update= diff= edit= stop_at_cut=
3
+accept_rerere="--rerere-autoupdate"
4
+generate=no
5
+exec=:
6
+update= diff= edit= stop_at_cut= skip_cocci=
7
while case "$#,$1" in 0,*) break;; *,-*) ;; esac
8
do
9
case "$1" in
@@ -15,6 +18,9 @@ do
18
-u) update=${2?"update what?"}
19
generate=yes
20
shift ;;
21
+ -x) exec=${2?exec}; shift ;;
22
+ -x?*) exec=${1#-x} ;;
23
+ -ss) skip_cocci=t ;;
24
*) generate=yes
25
break ;;
26
esac
@@ -29,7 +35,7 @@ annotate_merge () {
35
s/^\s*//;
36
if (/^Will (?:\S+ ){0,2}(fast-track|hold|keep|merge|drop|discard|cook|kick|defer|eject|be re-?rolled|wait)[,. ]/ ||
37
/^Not urgent/ || /^Not ready/ || /^Waiting for / ||
32
- /^Can wait in / || /^Still / ||
38
+ /^Can wait in / || /^Still / || /^Stuck / ||
39
/^Needs? / || /^Expecting / || /^May want to /) {
40
return 1;
41
}
@@ -108,6 +114,8 @@ annotate_merge () {
114
' "$1"
115
}
116
117
+cocci_mark="treewide: apply cocci patch"
118
+
119
case "$generate" in
120
no)
121
accept_rerere () {
@@ -151,6 +159,23 @@ no)
159
count_since_last_cut=0
160
fi
161
continue ;;
162
+ '#cocci')
163
+ if test -n "$skip_cocci" && test -n "$eh"
164
+ then
165
+ git cherry-pick --no-commit "$eh"
166
+ else
167
+ rm -f contrib/coccinelle/*.patch
168
+ Meta/Make -j8 coccicheck
169
+ cat contrib/coccinelle/*.patch | git apply --index ||
170
+ exit
171
+ git diff --quiet HEAD && continue
172
+ fi
173
+ git commit -m "$cocci_mark" || exit
174
+
175
+ mark_cut
176
+
177
+ continue
178
+ ;;
179
'#'* | '')
180
continue ;;
181
esac
@@ -198,6 +223,8 @@ no)
223
git cherry-pick "$branch" || exit ;;
224
*) echo >&2 "Eh? $branch $eh"; exit ;;
225
esac
226
+
227
+ eval "$exec" || exit
228
done
229
exit
230
esac
@@ -269,6 +296,9 @@ generate () {
296
if other=$(git rev-parse -q --verify "$commit^2")
297
then
298
show_merge
299
+ elif test "$msg" = "$cocci_mark"
300
+ then
301
+ merged="#cocci "$(git rev-parse "$commit^0")
302
else
303
show_pick
304
fi