#!/bin/bash set -e GIT_FETCH_ARGS="" GIT_CHECKOUT_ARGS="" if [[ -n "${PLUGIN_DEPTH}" ]]; then GIT_FETCH_ARGS="${GIT_FETCH_ARGS} --depth=${PLUGIN_DEPTH}" fi if [ ! -d .git ]; then git init git remote add origin "${DRONE_REMOTE_URL}" fi # the branch may be empty for certain event types, # such as github deployment events. If the branch # is empty we checkout the sha directly. Note that # we intentially omit depth flags to avoid failed # clones due to lack of history. if [[ -z "${DRONE_COMMIT_BRANCH}" ]] && [[ -n "${DRONE_COMMIT_SHA}" ]]; then GIT_CHECKOUT_ARGS="${GIT_CHECKOUT_ARGS} --quiet --force ${DRONE_COMMIT_SHA}" GIT_FETCH_ARGS="${GIT_FETCH_ARGS} origin" fi # the commit sha may be empty for builds that are # manually triggered in Harness CI Enterprise. If # the commit is empty we clone the branch. if [[ -n "${DRONE_COMMIT_BRANCH}" ]] && [[ -z "${DRONE_COMMIT_SHA}" ]]; then GIT_CHECKOUT_ARGS="${GIT_CHECKOUT_ARGS} -b ${DRONE_COMMIT_BRANCH} refs/remotes/origin/${DRONE_COMMIT_BRANCH}" GIT_FETCH_ARGS="${GIT_FETCH_ARGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:refs/remotes/origin/${DRONE_COMMIT_BRANCH}" fi # if the commit sha and branch name not empty, fetch the branch even if a # fast-forward is not possible. Checkout the specified commit sha which must be # part of the branch. if [[ -n "${DRONE_COMMIT_BRANCH}" ]] && [[ -n "${DRONE_COMMIT_SHA}" ]]; then GIT_CHECKOUT_ARGS="${GIT_CHECKOUT_ARGS} ${DRONE_COMMIT_SHA} -b refs/remotes/origin/${DRONE_COMMIT_BRANCH}" GIT_FETCH_ARGS="${GIT_FETCH_ARGS} origin +refs/heads/${DRONE_COMMIT_BRANCH}:refs/remotes/origin/${DRONE_COMMIT_BRANCH}" fi git fetch ${GIT_FETCH_ARGS} git checkout ${GIT_CHECKOUT_ARGS}