if [ -e "/tmp/IS_EMPTY_REPO" ]; then _log "It's empty repo. skip pull source" exit 0 fi if [ "$PLUGIN_NEED_MERGE" = true ]; then _log "pull source due to need merge..." _log "git cat-file -e \"${PLUGIN_SOURCE_SHA}^{commit}\"" git cat-file -e "${PLUGIN_SOURCE_SHA}^{commit}" local NEED_FETCH=$? if [ "$NEED_FETCH" == 0 ]; then _log "no need to fetch" else local OPTIONS="-v --progress --force --no-recurse-submodules" local REFMAP="--refmap=+refs/heads/*:refs/remotes/origin/*" if [[ "$PLUGIN_SOURCE_REF" =~ ^refs/tags/.* ]]; then REFMAP="--refmap=+refs/tags/*:refs/tags/*" fi if [ "$PLUGIN_SOURCE_URL" == "$PLUGIN_TARGET_URL" ]; then _log "git fetch $OPTIONS $REFMAP origin \"${PLUGIN_SOURCE_REF}\"" git fetch $OPTIONS $REFMAP origin "${PLUGIN_SOURCE_REF}" ret=$?; [ $ret -ne 0 ] && exit $ret; else _log "git fetch $OPTIONS \"${PLUGIN_SOURCE_URL}\" \"${PLUGIN_SOURCE_REF}\"" git fetch $OPTIONS "${PLUGIN_SOURCE_URL}" "${PLUGIN_SOURCE_REF}" ret=$?; [ $ret -ne 0 ] && exit $ret; fi fi _log "git cat-file -e \"${PLUGIN_SOURCE_SHA:-FETCH_HEAD}^{commit}\"" git cat-file -e "${PLUGIN_SOURCE_SHA:-FETCH_HEAD}^{commit}" if ! [ "$?" == 0 ]; then echo -e "${PLUGIN_SOURCE_URL} 的引用 ${PLUGIN_SOURCE_REF} 不包含所需提交 ${PLUGIN_SOURCE_SHA} " exit 1 fi if [ "$PLUGIN_SOURCE_URL" == "$PLUGIN_TARGET_URL" ] && [[ "$PLUGIN_SOURCE_REF" =~ ^refs/heads/.* ]]; then _log "git update-ref \"${PLUGIN_SOURCE_REF}\" \"${PLUGIN_SOURCE_SHA:-FETCH_HEAD}\"" git update-ref "${PLUGIN_SOURCE_REF}" "${PLUGIN_SOURCE_SHA:-FETCH_HEAD}" fi _log "git merge --quiet --no-edit \"${PLUGIN_SOURCE_SHA:-FETCH_HEAD}\"" git merge --quiet --no-edit "${PLUGIN_SOURCE_SHA:-FETCH_HEAD}" ret=$?; [ $ret -ne 0 ] && exit $ret; fi