|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
API_MAIN_BRANCH="main"
|
|
|
|
COMMITTER_NAME="${GITHUB_NAME:-}"
|
|
|
|
COMMITTER_EMAIL="${GITHUB_EMAIL:-}"
|
|
|
|
|
|
|
|
|
|
|
|
if [[ -z "$ENVOY_SRC_DIR" ]]; then
|
|
|
|
echo "ENVOY_SRC_DIR not set, it should point to a cloned Envoy repo" >&2
|
|
|
|
exit 1
|
|
|
|
elif [[ ! -e "$ENVOY_SRC_DIR" ]]; then
|
|
|
|
echo "ENVOY_SRC_DIR ($ENVOY_SRC_DIR) not found, did you clone it?" >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
git config --global user.email "$COMMITTER_EMAIL"
|
|
|
|
git config --global user.name "$COMMITTER_NAME"
|
|
|
|
|
|
|
|
|
|
|
|
# Determine last envoyproxy/envoy SHA in envoyproxy/data-plane-api
|
|
|
|
MIRROR_MSG="Mirrored from https://github.com/envoyproxy/envoy"
|
|
|
|
LAST_ENVOY_SHA="$(git log --grep="$MIRROR_MSG" -n 1 | grep "$MIRROR_MSG" \
|
|
|
|
| tail -n 1 \
|
|
|
|
| sed -e "s#.*$MIRROR_MSG @ ##")"
|
|
|
|
|
|
|
|
echo "Last mirrored envoyproxy/envoy SHA is $LAST_ENVOY_SHA"
|
|
|
|
|
|
|
|
# Compute SHA sequence to replay in envoyproxy/data-plane-api
|
|
|
|
SHAS=$(git -C "$ENVOY_SRC_DIR" rev-list --reverse "$LAST_ENVOY_SHA"..HEAD api/)
|
|
|
|
|
|
|
|
read -r -a SHAS <<< "$(git -C "$ENVOY_SRC_DIR" rev-list --reverse "$LAST_ENVOY_SHA"..HEAD api/ | tr '\n' ' ')"
|
|
|
|
|
|
|
|
# For each SHA, hard reset, rsync api/ and generate commit in
|
|
|
|
# envoyproxy/data-plane-api
|
|
|
|
API_WORKING_DIR="../envoy-api-mirror"
|
|
|
|
git -C "$ENVOY_SRC_DIR" worktree add "$API_WORKING_DIR"
|
|
|
|
for sha in "${SHAS[@]}"; do
|
|
|
|
echo "Adding commit ${sha}"
|
|
|
|
git -C "$API_WORKING_DIR" reset --hard "$sha"
|
|
|
|
COMMIT_MSG="$(git -C "$API_WORKING_DIR" log --format=%B -n 1)"
|
|
|
|
QUALIFIED_COMMIT_MSG="$(echo -e "$COMMIT_MSG\n\n$MIRROR_MSG @ $sha")"
|
|
|
|
rsync -acv --delete --exclude "ci/" --exclude ".*" --exclude LICENSE \
|
|
|
|
"${API_WORKING_DIR}/api/" .
|
|
|
|
git add .
|
|
|
|
git commit -m "$QUALIFIED_COMMIT_MSG"
|
|
|
|
done
|
|
|
|
|
|
|
|
if [[ "${#SHAS[@]}" -ne 0 ]]; then
|
|
|
|
echo "Pushing..."
|
|
|
|
git push origin "${API_MAIN_BRANCH}"
|
|
|
|
else
|
|
|
|
echo "Nothing to push"
|
|
|
|
fi
|
|
|
|
echo "Done"
|