blob: ea8611ba5779c6c6010d05bbae3f205c2e7632eb [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh
2#
3# USAGE: git-short-commit.sh <GIT_URL> <GIT_REF> <GIT_DIR>
4#
5
6set -e
7
8error() {
9 echo "ERROR: ${*}" >&2
10 exit 1
11}
12
13GIT_URL="${1}"
14if [ -z "${GIT_URL}" ]; then
15 error "Git URL not specified"
16fi
17
18GIT_REF="${2}"
19if [ -z "${GIT_REF}" ]; then
20 error "Git reference not specified"
21fi
22
23GIT_DIR="${3}"
24if [ -z "${GIT_DIR}" ]; then
25 error "Git clone directory not specified"
26fi
27
28clean_up() {
29 rm --force --recursive "${GIT_DIR}"
30}
31trap clean_up EXIT
32
33git init --quiet "${GIT_DIR}"
34(
35 cd "${GIT_DIR}"
36 for PREFIX in "" "https://" "http://" "git@"; do
37 echo "Trying remote '${PREFIX}${GIT_URL}'" >&2
38 git remote add origin "${PREFIX}${GIT_URL}"
39
40 if git fetch --depth 1 origin "${GIT_REF}"; then
41 git checkout --detach FETCH_HEAD --
42 git rev-parse --short HEAD
43 break
44 fi
45
46 git remote remove origin
47 done
48)