mirror of
https://github.com/docker/cli.git
synced 2026-08-24 10:05:37 -05:00
37 lines
868 B
Bash
Executable File
37 lines
868 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Merge the given release tags.
|
|
set -Eeuo pipefail
|
|
|
|
if [[ $# -lt 1 ]]; then
|
|
echo "usage: $0 TAG..." >&2
|
|
exit 1
|
|
fi
|
|
|
|
tags_to_sync=("$@")
|
|
|
|
for tag_to_sync in "${tags_to_sync[@]}"; do
|
|
if git merge --no-edit --no-ff "$tag_to_sync"; then
|
|
continue
|
|
fi
|
|
|
|
if ! git rev-parse --verify --quiet MERGE_HEAD > /dev/null || git diff --quiet --diff-filter=U; then
|
|
exit 1
|
|
fi
|
|
|
|
git checkout "$tag_to_sync" -- '.'
|
|
git add --all
|
|
|
|
# Can't use --no-edit with --continue
|
|
EDITOR=true git merge --continue
|
|
done
|
|
|
|
# Check that every tag is in the branch.
|
|
# This catches cases where a merge did not actually incorporate one of the
|
|
# requested release tags.
|
|
for tag_to_sync in "${tags_to_sync[@]}"; do
|
|
if ! git merge-base --is-ancestor "$tag_to_sync" HEAD; then
|
|
echo "tag $tag_to_sync is not contained in $(git rev-parse --abbrev-ref HEAD)" >&2
|
|
exit 1
|
|
fi
|
|
done
|