From 4c99bd2137f422a8b89ee6eeb0c516e60d15f137 Mon Sep 17 00:00:00 2001 From: aavit Date: Wed, 17 Sep 2014 10:05:35 +0200 Subject: Init script can now use existing build dir for clone reference Add --reference argument. If one has an already checked out build directory, save download time and disk space by reusing the git object storage. Ref. git clone --reference. Change-Id: I89327597a29cb5e7e5c86acefcdf33e3ee42d0fc Reviewed-by: Samuli Piippo --- b2qt-init-build-env | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/b2qt-init-build-env b/b2qt-init-build-env index 1d598a5..ec9f394 100755 --- a/b2qt-init-build-env +++ b/b2qt-init-build-env @@ -24,7 +24,7 @@ set -e usage() { - echo "Usage: $0 [--force]" + echo "Usage: $0 [--force] [--reference ]" } while test -n "$1"; do @@ -36,6 +36,10 @@ while test -n "$1"; do "--force" | "-f") FORCE_UPDATE=1 ;; + "--reference" | "-r") + shift + REFDIR=$1 + ;; *) BUILDDIR=$1 ;; @@ -43,8 +47,16 @@ while test -n "$1"; do shift done +if [ -z "${BUILDDIR}" ]; then + usage + exit 1 +fi + DIR=$(readlink -f $(dirname $0)) BUILDDIR=$(readlink -f $BUILDDIR) +if [ -n "${REFDIR}" ]; then + REFDIR=$(readlink -f ${REFDIR}) +fi checkout() { REPO=$1 @@ -59,6 +71,12 @@ checkout() { if [ ! -d ${BUILDDIR}/${REPODIR}/.git ]; then echo "Checking out ${REPODIR}" git init + if [ -n "${REFDIR}" ]; then + REPOREFDIR=${REFDIR}/${REPODIR}/.git/objects + if [ -d ${REPOREFDIR} ]; then + echo ${REPOREFDIR} > .git/objects/info/alternates + fi + fi git remote add origin ${REPO} -f git checkout ${REF} git reset --hard ${SHA1} -- cgit v1.2.3-54-g00ecf