grub2/do-rebase

144 lines
2.8 KiB
Text
Raw Permalink Normal View History

#!/bin/bash
set -e
2017-06-16 19:21:18 +00:00
set -u
shopt -qu globstar
2017-06-16 19:21:18 +00:00
shopt -qs expand_aliases
export LC_COLLATE=C
export LC_ALL=C
diff_ops="-O.git.diff.order --patience -l0"
format_patch_ops="--zero-commit --no-signature --no-numbered --stat=80 --summary $diff_ops"
2017-06-16 19:21:18 +00:00
alias othergit="GIT_DIR=$PWD/.rhboot.git GIT_WORK_TREE=$PWD git"
alias formatpatch="othergit format-patch $format_patch_ops"
2017-06-16 19:21:18 +00:00
usage()
{
retcode=0
if [ -n "${1:-}" ]; then
exec 1>&2
retcode=$1
fi
echo usage: "do-rebase [OPTIONS] --dist=<RELEASE_VER> --repo=<REPOSITORY> --branch=<BRANCH>"
echo OPTIONS: "--amend --commit --nocommit --bumpspec --nobumpspec"
exit "$retcode"
}
on_error() {
exec 1>&2
echo "An error occurred. Exiting..."
git reset --hard
exit 1
}
trap 'on_error' ERR
# Check if the working directory is clean (no changes)
if ! git diff-index --quiet HEAD --; then
echo "Working directory is not clean, cannot rebase." 1>&2
exit 1
fi
gitrepo=""
branch=""
releasever=""
amend=""
commit=1
bumpspec=1
while [ $# -gt 0 ]; do
case $1 in
--help|-h|--usage|-?|-u)
usage
;;
--dist=*)
releasever=${1##--dist=}
;;
--dist)
shift
releasever=$1
;;
--repo=*)
gitrepo=${1##--repo=}
;;
--repo)
shift
gitrepo=$1
;;
--branch=*)
branch=${1##--branch=}
;;
--branch)
shift
branch=$1
;;
--amend)
amend="--amend"
;;
--commit)
commit=1
;;
--nocommit|--no-commit|--nc)
# --nocommit implies nobumpspec, but --bumpspec after it will
# force bumpspec to get run.
commit=0
bumpspec=0
;;
--bumpspec)
bumpspec=2
;;
--nobumpspec|--no-bumpspec|--nb)
bumpspec=0
;;
*)
echo "Unknown parameter $1"
;;
esac
shift
done
# check must params
if [ -z "$releasever" ] || [ -z "$gitrepo" ] || [ -z "$branch" ]; then
usage
fi
if [ ! -d "$PWD/.rhboot.git" ]; then
2017-06-16 19:21:18 +00:00
othergit init
othergit config core.abbrev 11
if ! othergit remote add rhboot "$gitrepo" >/dev/null 2>&1 ; then
2017-06-16 19:21:18 +00:00
echo "Could not add remote: rhboot" 1>&2
exit 1
fi
elif othergit remote show -n rhboot | grep -q "URL: github$" ; then
if ! othergit remote add rhboot "$gitrepo" >/dev/null 2>&1 ; then
2017-06-16 19:21:18 +00:00
echo "Could not add remote: rhboot" 1>&2
exit 1
fi
else
othergit remote set-url rhboot "${gitrepo}"
fi
2017-06-16 19:21:18 +00:00
othergit fetch rhboot
unset LC_ALL
git rm -q 0*.patch
fedpkg --release "$releasever" sources
2017-06-16 19:21:18 +00:00
> grub.patches
patches=$(formatpatch refs/remotes/rhboot/master..refs/remotes/rhboot/"${branch}")
for x in $patches ; do
echo "Patch$(echo "${x}" | cut -d- -f1): ${x}" >> grub.patches
done
if [[ -z "$amend" && ${bumpspec} -gt 0 ]] || [[ ${bumpspec} -ge 2 ]] ; then
rpmdev-bumpspec -c "- Rebased to newer upstream for ${releasever}" grub2.spec
fi
2017-06-16 19:21:18 +00:00
git add 0*.patch grub2.spec grub.patches
if [[ ${commit} -eq 1 ]] ; then
if [ -z "$amend" ]; then
fedpkg --release "$releasever" commit -s -c
else
git commit --amend
fi
fi