die_with_continue_instructions
fi
fi
- # Announce the plan.
- echo "Attempting to merge ${REPLAY_BRANCH} into ${TARGET_BRANCH}..."
- # Check if a local branch with the same name as the target branch
- # exists. If it does not, switch to a new local branch with the same
- # name as the target branch. Otherwise, ensure the local branch is not
- # behind the target branch at the target remote, then switch to it.
- if ! branch_exists "${TARGET_BRANCH}"; then
- git checkout -t -b "${TARGET_BRANCH}" "${TARGET_REF}" >/dev/null
- else
- die_if_local_behind_target
- git checkout "${TARGET_BRANCH}" &>/dev/null
- fi
- # Use the original commit message with a modified subject line.
- COMMIT_MSG="$(
- git log --max-count=1 --format="%B" "${SOURCE_COMMIT}" |
- sed "1s/.*/Merge branch '${REPLAY_BRANCH}' into '${TARGET_BRANCH}'/;"
- )"
- # Merge the replay branch into the local target branch.
- git merge --no-ff -m "${COMMIT_MSG}" "${REPLAY_BRANCH}"
- cat <<-EOF
- Replayed ${SOURCE_BRANCH} onto ${TARGET_BRANCH}.
- To push the replay, use:
+ git push ${TARGET_REMOTE} -u ${REPLAY_BRANCH}
- git push ${TARGET_REMOTE} ${TARGET_BRANCH}:${TARGET_BRANCH}
+ REPLAY_COMMIT_TITLE="$(git show --format="%b" "${SOURCE_COMMIT}" 2>&1 | head -1)"
- EOF
+ gitlab create_merge_request 1 "${REPLAY_COMMIT_TITLE}" "{source_branch: '${REPLAY_BRANCH}', target_branch: '${TARGET_BRANCH}'}"
+
cleanup
+ exit 0
}
cleanup() {
git merge --abort
git cherry-pick --abort
git checkout "${CHECKED_OUT_BRANCH}"
- git branch -D "${REPLAY_BRANCH}"
} &>/dev/null || true
rm -f "${STATE_FILE}"
}