coreboot-kgpe-d16/util/scripts/cross-repo-cherrypick
Martin Roth 0ad5fbd48d util: Update all shebangs to use /usr/bin/env
Instead of hardcoding paths to the executables, use the version in the
path.  This allows the scripts to work on more systems, and allows the
binary version to be changed more easily if needed.

Signed-off-by: Martin Roth <martin@coreboot.org>
Change-Id: Ifcc56aa21092cd3866eacb6a02d198110ec6051d
Reviewed-on: https://review.coreboot.org/c/coreboot/+/48904
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2021-01-25 08:57:40 +00:00

71 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env sh
# cross-repo-cherrypick - rebase helper script
#
# SPDX-License-Identifier: GPL-2.0-only
# Adapt to your remote branch:
BRANCH="origin/master"
# When pulling in patches from another tree from a gerrit repository,
# do the following at the end of a larger cherry-pick series:
# git remote add ...
# git checkout -b upstreaming
# git cherry-pick ...
# git rebase -i --exec util/scripts/cross-repo-cherrypick master
# Alternatively, you can run util/scripts/cross-repo-cherrypick after every
# individual cherry-pick.
# use $0 --cros to add a stub BUG/BRANCH/TEST block
commit_message() {
git log -n 1 | grep "^ " | cut -c5-
}
ORIGIN_HOST=$( commit_message |grep "^Reviewed-on: " |head -1 |cut -d/ -f3 )
case "${ORIGIN_HOST}" in
review.coreboot.org)
BRANCH="origin/master"
MESSAGE_PREFIX="UPSTREAM: "
;;
chromium-review.googlesource.com)
BRANCH="cros/chromeos-2016.05"
MESSAGE_PREFIX=""
;;
esac
# lines must be backwards due to tac(1)
SPLICE_CMD=""
if test "$1" = "--cros"; then
if test -z "$( commit_message |egrep '^(BUG|TEST)=')"; then
SPLICE_CMD='print "\nTEST=none\nBRANCH=none\nBUG=none\n"'
fi
fi
CHID=$( commit_message | grep -i "^Change-Id: I" )
CID=$( git log -n1 --grep "^$CHID$" --pretty=%H $BRANCH )
GUID="$(git config user.name) <$(git config user.email)>"
# TBD: Don't add Original- to empty lines, and possibly make script more
# solid for commits with an unexpected order of meta data lines.
(printf "${MESSAGE_PREFIX}"; commit_message) | tac | awk '/^$/ {
if (end==0) {
print "Original-Commit-Id: '"${CID}"'\nSigned-off-by: '"${GUID}"'";
'"${SPLICE_CMD}"'
}
end=1
}; /^(BUG|BRANCH|TEST)=/ {
if (end==0) {
print "Original-Commit-Id: '"${CID}"'\nSigned-off-by: '"${GUID}"'";
print "";
}
end=1
}; /^Cq-Depend:/ {
print $0;
next
}; {
if (end==0)
print "Original-" $0;
else
print $0;
}' | tac | git commit --amend -F -