You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.7 KiB
78 lines
1.7 KiB
#!/bin/bash -eu
|
|
|
|
# This script generates a commit that updates the handler submodule. It
|
|
# assumes that it'll be run from within the repo while it's checked out as a
|
|
# submodule.
|
|
# ./handler/bin/updateHandler.sh updates to master
|
|
# ./handler/bin/updateHandler.sh hash updates to specified hash
|
|
|
|
# go to the script's directory
|
|
cd $(dirname $0)
|
|
# go to the handler directory
|
|
cd ..
|
|
# store what it's called
|
|
HANDLER=$(basename "$PWD")
|
|
echo "The handler is in: $HANDLER"
|
|
|
|
# Check that both working directories are clean
|
|
if git status -uno --ignore-submodules | grep -i changes > /dev/null
|
|
then
|
|
echo >&2 "handler working directory must be clean"
|
|
# exit 1
|
|
fi
|
|
cd ..
|
|
if git status -uno --ignore-submodules | grep -i changes > /dev/null
|
|
then
|
|
echo >&2 "Working directory must be clean"
|
|
exit 1
|
|
fi
|
|
BRANCH=$(git branch --show-current)
|
|
|
|
git fetch origin
|
|
if ! git merge-base --is-ancestor origin/$BRANCH $BRANCH; then
|
|
echo "Pull remote changes first"
|
|
exit 1
|
|
fi
|
|
git submodule update
|
|
|
|
cd $HANDLER
|
|
git fetch origin
|
|
|
|
# Figure out what to set the submodule to
|
|
if [ -n "${1:-}" ]
|
|
then
|
|
TARGET="$1"
|
|
TARGETDESC="$1"
|
|
else
|
|
TARGET=origin/main
|
|
TARGETDESC="main ($(git rev-parse --short origin/main))"
|
|
fi
|
|
|
|
# Generate commit summary
|
|
# TODO recurse
|
|
NEWCHANGES=$(git log ..$TARGET --oneline --no-merges --topo-order --reverse --color=never)
|
|
NEWCHANGESDISPLAY=$(git log ..$TARGET --oneline --no-merges --reverse --color=always)
|
|
COMMITMSG=$(cat <<END
|
|
Update handler submodule to $TARGETDESC
|
|
|
|
New changes:
|
|
$NEWCHANGES
|
|
END
|
|
)
|
|
# Check out master (or hash) of handler
|
|
git checkout $TARGET
|
|
|
|
# Commit
|
|
cd ..
|
|
git commit $HANDLER -m "$COMMITMSG" > /dev/null
|
|
if [ "$?" == "1" ]
|
|
then
|
|
echo >&2 "No changes"
|
|
else
|
|
cat >&2 <<END
|
|
|
|
|
|
Created commit with changes:
|
|
$NEWCHANGESDISPLAY
|
|
END
|
|
fi
|