#set -euxo pipefail set -e # abort on first error shopt -s nullglob source /usr/share/makepkg/util/message.sh colorize if ! [[ $1 ]] || ! [[ $2 ]]; then echo 'No version specified, must specify the new and old version, eg. 5.9.2 5.9.1' echo "Usage: $0 newversion oldversion [old-branch-suffix=mingw-w64] [new-branch-suffix=mingw-w64]" echo "Note: supposed to be run within the Qt Git checkout" exit -1 fi newversion="$1" oldversion="$2" oldbranchsuffix="${3:-mingw-w64}" newbranchsuffix="${4:-mingw-w64}" # check whether branch for new version already exists newversionbranch=$newversion-$newbranchsuffix branch_count=$(git branch | grep -- "$newversionbranch" | wc -l) if [[ $branch_count -ge 1 ]]; then msg2 "Branch for new version $newversionbranch already exists. Likely already rebased (otherwise, use continue-rebase-patches.sh)." continue fi # determine branch from old version oldversionbranch=$oldversion-$oldbranchsuffix branch_count=$(git branch | grep -- "$oldversionbranch" | wc -l) if [[ $branch_count -lt 1 ]]; then msg2 "Branch for old version $oldversionbranch doesn't exist. Likely we just don't need any patches for this repo :-)" exit 0 fi if [[ $branch_count -gt 1 ]]; then msg 'Which of the following branches was the latest for the old version?' git branch | grep "$oldversionbranch" msg2 'Please disambiguate by specifying the corresponding suffix as 3rd argument.' exit -1 fi # determine remote to push remote= for maybe_remote in 'martchus' 'origin'; do if git remote get-url $maybe_remote; then remote=$maybe_remote break fi done if ! [[ $remote ]]; then error "Unable to detect remote" exit -2 fi # update Git checkout, create new branch with rebased commits, push to remote git remote update git checkout -b "$newversionbranch" "origin/$newversion" git cherry-pick "v$oldversion..$oldversionbranch" git push -u $maybe_remote "$newversionbranch"