#!/usr/bin/bash set -ex DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" SOURCE_DIR="$(git -C $DIR rev-parse --show-toplevel)" if [ -z "$TARGET_DIR" ]; then TARGET_DIR="$(mktemp -d)" fi # set git identity source $DIR/identity.sh echo "[-] Setting up target repo T=$SECONDS" rm -rf $TARGET_DIR mkdir -p $TARGET_DIR cd $TARGET_DIR cp -r $SOURCE_DIR/.git $TARGET_DIR pre-commit uninstall || true echo "[-] bringing master-ci and devel in sync T=$SECONDS" cd $TARGET_DIR git fetch --depth 1 origin master-ci git fetch --depth 1 origin devel git checkout -f --track origin/master-ci git reset --hard master-ci git checkout master-ci git reset --hard origin/devel git clean -xdff git lfs uninstall # remove everything except .git echo "[-] erasing old openpilot T=$SECONDS" find . -maxdepth 1 -not -path './.git' -not -name '.' -not -name '..' -exec rm -rf '{}' \; # reset source tree cd $SOURCE_DIR git clean -xdff # do the files copy echo "[-] copying files T=$SECONDS" cd $SOURCE_DIR cp -pR --parents $(./release/release_files.py) $TARGET_DIR/ # in the directory cd $TARGET_DIR rm -f panda/board/obj/panda.bin.signed # include source commit hash and build date in commit GIT_HASH=$(git --git-dir=$SOURCE_DIR/.git rev-parse HEAD) DATETIME=$(date '+%Y-%m-%dT%H:%M:%S') VERSION=$(cat $SOURCE_DIR/common/version.h | awk -F\" '{print $2}') echo "[-] committing version $VERSION T=$SECONDS" git add -f . git status git commit -a -m "openpilot v$VERSION release date: $DATETIME master commit: $GIT_HASH " # should be no submodules or LFS files git submodule status if [ ! -z "$(git lfs ls-files)" ]; then echo "LFS files detected!" exit 1 fi # ensure files are within GitHub's limit BIG_FILES="$(find . -type f -not -path './.git/*' -size +95M)" if [ ! -z "$BIG_FILES" ]; then printf '\n\n\n' echo "Found files exceeding GitHub's 100MB limit:" echo "$BIG_FILES" exit 1 fi if [ ! -z "$BRANCH" ]; then echo "[-] Pushing to $BRANCH T=$SECONDS" git push -f origin master-ci:$BRANCH fi echo "[-] done T=$SECONDS, ready at $TARGET_DIR"