cilium
49 строк · 1.0 Кб
1#!/usr/bin/env bash
2set -e
3
4source $(dirname $(readlink -ne $BASH_SOURCE))/common.sh
5
6require_linux
7
8ORG=${ORG:-"cilium"}
9REPO=${REPO:-"cilium"}
10BRANCH=${BRANCH:-"main"}
11
12cleanup () {
13if [ -n "$TMPF" ]; then
14rm $TMPF
15fi
16}
17
18trap cleanup EXIT
19
20cherry_pick () {
21CID=$1
22if ! commit_in_upstream "$CID" "$BRANCH" "${ORG}" "${REPO}"; then
23echo "Commit $CID not in $REM/$BRANCH!"
24exit 1
25fi
26TMPF=`mktemp cp.XXXXXX`
27FROM=`git show --pretty=email $CID | head -n 2 | grep "From: "`
28FULL_ID=`git show $CID | head -n 1 | cut -f 2 -d ' '`
29git format-patch -1 $FULL_ID --stdout | sed '/^$/Q' > $TMPF
30echo "" >> $TMPF
31echo "[ upstream commit $FULL_ID ]" >> $TMPF
32git format-patch -1 $FULL_ID --stdout | sed -n '/^$/,$p' >> $TMPF
33echo "Applying: $(git log -1 --oneline $FULL_ID)"
34git am --quiet -3 --signoff $TMPF
35}
36
37main () {
38REM="$(get_remote "${ORG}" "${REPO}")"
39for CID in "$@"; do
40cherry_pick "$CID"
41done
42}
43
44if [ $# -lt 1 ]; then
45echo "Usage: $0 <commit-id> [commit-id ...]"
46exit 1
47fi
48
49main "$@"
50