Merge Official Source
This commit is contained in:
48
git-short-commit.sh
Executable file
48
git-short-commit.sh
Executable file
@@ -0,0 +1,48 @@
|
||||
#!/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 -rf "${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=7 HEAD
|
||||
break
|
||||
fi
|
||||
|
||||
git remote remove origin
|
||||
done
|
||||
)
|
||||
Reference in New Issue
Block a user