blob: 4a11469f6cbfd555f53f8ec01044493b83c3ffb1 [file] [log] [blame] [edit]
#!/bin/bash -ex
#
# Copyright 2023 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Update between branches, to a new major version.
cd `dirname ${BASH_SOURCE[0]}`/..
if [ -z ${1+x} ]; then
echo "Usage: update-major-version.sh <upstream tag>"
exit 1
fi
NEW_VERSION=$1
NEW_VERSION_SHORT=${NEW_VERSION#upstream-}
CURRENT_VERSION=upstream-$(grep 'version:' METADATA | grep -E -o 'v[0-9][^"]+')
CURRENT_HEAD=$(git rev-parse HEAD)
echo "Updating from $CURRENT_VERSION to $NEW_VERSION"
ADDED_FILES=$(git diff --name-only --diff-filter=A $CURRENT_VERSION HEAD | sort)
CHANGED_FILES=$(git diff --name-only --diff-filter=a $CURRENT_VERSION HEAD | sort)
PATCHFILE=$(mktemp --suffix=.patch)
trap "rm -f $PATCHFILE" EXIT
git diff --patch $CURRENT_VERSION HEAD -- $CHANGED_FILES > $PATCHFILE
git merge --no-commit -s ours $NEW_VERSION
git restore --staged --worktree --source=$NEW_VERSION -- .
git restore --staged --worktree --source=$CURRENT_HEAD -- $ADDED_FILES
patch -p1 < $PATCHFILE
git add $CHANGED_FILES
sed -i -e "s/\(version: \"\)v[0-9][^\"]*/\1$NEW_VERSION_SHORT/" METADATA
git add METADATA
NEW_ADDED_FILES=$(git diff --name-only --diff-filter=A --staged $NEW_VERSION | sort)
if [ "$ADDED_FILES" != "$NEW_ADDED_FILES" ] ; then
echo "Added files don't match"
exit 1
fi
NEW_CHANGED_FILES=$(git diff --name-only --diff-filter=a --staged $NEW_VERSION | sort)
if [ "$CHANGED_FILES" != "$NEW_CHANGED_FILES" ] ; then
echo "Changed files don't match"
exit 1
fi