|
|
- #!/bin/sh
- #
- # USAGE: git-short-commit.sh <GIT_URL> <GIT_REF> <GIT_DIR>
- #
-
- set -e
-
- error() {
- echo "ERROR: ${*}" >&2
- exit 1
- }
-
- GIT_URL="${1}"
- if [ -z "${GIT_URL}" ]; then
- error "Git URL not specified"
- fi
-
- GIT_REF="${2}"
- if [ -z "${GIT_REF}" ]; then
- error "Git reference not specified"
- fi
-
- GIT_DIR="${3}"
- if [ -z "${GIT_DIR}" ]; then
- error "Git clone directory not specified"
- fi
-
- clean_up() {
- rm --force --recursive "${GIT_DIR}"
- }
- trap clean_up EXIT
-
- git init --quiet "${GIT_DIR}"
- (
- cd "${GIT_DIR}"
- for PREFIX in "" "https://" "http://" "git@"; do
- echo "Trying remote '${PREFIX}${GIT_URL}'" >&2
- git remote add origin "${PREFIX}${GIT_URL}"
-
- if git fetch --depth 1 origin "${GIT_REF}"; then
- git checkout --detach FETCH_HEAD --
- git rev-parse --short HEAD
- break
- fi
-
- git remote remove origin
- done
- )
|