xamarin-macios/mk/xamarin-reset.sh

69 строки
2.7 KiB
Bash
Executable File

#!/bin/bash -e
if test -n "$V"; then set -x; fi
DEPENDENCY_NAME="$1"
# Calculate the remote from the format: git@github.com:<remote>/<repo>.git
if [[ $DEPENDENCY_MODULE =~ git@github.com ]]; then
# git@ url
DEPENDENCY_REMOTE=${DEPENDENCY_MODULE/git@github.com:/}
DEPENDENCY_REMOTE=${DEPENDENCY_REMOTE%%/*}
else
# https:// url
DEPENDENCY_REMOTE=${DEPENDENCY_MODULE/https:\/\/github.com\//}
DEPENDENCY_REMOTE=${DEPENDENCY_REMOTE%%/*}
fi
if test -d "$DEPENDENCY_PATH"; then
cd "$DEPENDENCY_PATH"
# Check if we have the remote we need
if ! git config "remote.$DEPENDENCY_REMOTE.url" > /dev/null; then
echo "*** [$DEPENDENCY_NAME] git remote add -f '$DEPENDENCY_REMOTE' '$DEPENDENCY_MODULE'"
git remote add -f "$DEPENDENCY_REMOTE" "$DEPENDENCY_MODULE"
fi
# Check if we have the hash we need
if ! git log -1 --pretty=%H "$DEPENDENCY_HASH" > /dev/null 2>&1; then
echo "*** [$DEPENDENCY_NAME] git fetch $DEPENDENCY_REMOTE"
git fetch "$DEPENDENCY_REMOTE"
elif ! git rev-parse --verify "$DEPENDENCY_REMOTE/$DEPENDENCY_BRANCH" > /dev/null 2>&1; then
# Also check if we have the branch we need, we might already have the hash, but not the branch
echo "*** [$DEPENDENCY_NAME] git fetch $DEPENDENCY_REMOTE"
git fetch "$DEPENDENCY_REMOTE"
fi
else
echo "*** [$DEPENDENCY_NAME] git clone $DEPENDENCY_MODULE --recursive $DEPENDENCY_DIRECTORY -b $DEPENDENCY_BRANCH --origin $DEPENDENCY_REMOTE"
mkdir -p "$(dirname "$DEPENDENCY_PATH")"
cd "$(dirname "$DEPENDENCY_PATH")"
git clone "$DEPENDENCY_MODULE" --recursive "$DEPENDENCY_DIRECTORY" -b "$DEPENDENCY_BRANCH" --origin "$DEPENDENCY_REMOTE"
cd "$DEPENDENCY_DIRECTORY"
fi
if ! git log -1 --pretty=%H "$DEPENDENCY_HASH" > /dev/null 2>&1; then
echo "The hash $DEPENDENCY_HASH does not exist in $DEPENDENCY_MODULE. Please verify that you pushed your changes."
exit 1
elif ! git rev-parse --verify "$DEPENDENCY_REMOTE/$DEPENDENCY_BRANCH" > /dev/null 2>&1; then
echo "The branch $DEPENDENCY_BRANCH does not exist in $DEPENDENCY_MODULE. Please verify that you pushed your changes."
exit 1
fi
if test -z "$DEPENDENCY_IGNORE_VERSION"; then
if git rev-parse --verify "$DEPENDENCY_BRANCH" >/dev/null 2>&1; then
# branch already exists
echo "*** [$DEPENDENCY_NAME] git checkout -f $DEPENDENCY_BRANCH"
git checkout -f "$DEPENDENCY_BRANCH"
else
# branch does not exist
echo "*** [$DEPENDENCY_NAME] git checkout -f -b $DEPENDENCY_BRANCH $DEPENDENCY_REMOTE/$DEPENDENCY_BRANCH"
git checkout -f -b "$DEPENDENCY_BRANCH" "$DEPENDENCY_REMOTE/$DEPENDENCY_BRANCH"
fi
echo "*** [$DEPENDENCY_NAME] git reset --hard $DEPENDENCY_HASH"
git reset --hard "$DEPENDENCY_HASH"
fi
echo "*** [$DEPENDENCY_NAME] git submodule update --init --recursive"
git submodule update --init --recursive