switch-coreboot/util/scripts/cross-repo-cherrypick
Patrick Georgi 21127c7f99 UPSTREAM: Rename and move util/gitconfig/rebase.sh
It has nothing to do with git configuration, but is one of our
convenience scripts. It also has nothing to do with rebases (except that
it can be comfortably used through git rebase --exec)

BUG=None
BRANCH=None
TEST=None

Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: https://review.coreboot.org/17101
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>

Change-Id: Icc60c4de486a0027fe2230e93b441e62ba022193
Reviewed-on: https://chromium-review.googlesource.com/402698
Commit-Ready: Furquan Shaikh <furquan@chromium.org>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-10-25 14:46:55 -07:00

47 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
# rebase.sh - rebase helper script
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# Adapt to your remote branch:
BRANCH="cros/chromeos-2016.05"
# 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/gitconfig/rebase.sh master
# Alternatively, you can run util/gitconfig/rebase.sh after every
# individual cherry-pick.
commit_message() {
git log -n 1 | grep "^ " | cut -c5-
}
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.
commit_message | tac | awk '/^$/ {
if (end==0)
print "Original-Commit-Id: '"$CID"'\nSigned-off-by: '"$GUID"'";
end=1
}; {
if (end==0)
print "Original-" $0;
else
print $0;
}' | tac | git commit --amend -F -