3
0
Fork 0
mirror of https://github.com/dtolnay/install.git synced 2024-11-22 08:29:30 +01:00
cargo-install/scripts/rebase.sh

41 lines
706 B
Bash
Raw Normal View History

#!/bin/bash
set -e
cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
if ! git diff-index --quiet HEAD; then
echo "Not running rebase.sh because git working directory is dirty" >&2
exit 1
fi
if [ -z "$1" ]; then
echo "Usage: scripts/rebase.sh [crate]..." >&2
exit 1
fi
base=$(git rev-parse HEAD)
push=()
(
set -x
git fetch --quiet origin --tags
)
for crate in "$@"; do
(
set -x
git tag -d "$crate" &>/dev/null || true
git checkout --quiet origin/"$crate"
git rebase --quiet "$base"
)
push+=("$(git rev-parse HEAD):refs/heads/$crate")
done
(
set -x
git checkout --quiet "$base"
)
git push origin --force-with-lease "${push[@]}"