mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
git-cache: bump to commit 5de20d6 from kaspar030/git-cache
This commit is contained in:
parent
ff2d23b038
commit
63bfbfabec
2
dist/tools/git/README.md
vendored
2
dist/tools/git/README.md
vendored
@ -16,7 +16,7 @@ In order to set up the cache, do:
|
|||||||
The used path can be overridden using the "GIT_CACHE_DIR" environment
|
The used path can be overridden using the "GIT_CACHE_DIR" environment
|
||||||
variable.
|
variable.
|
||||||
The cache repository will be used to cache multiple remote repositories.
|
The cache repository will be used to cache multiple remote repositories.
|
||||||
- add a repository to the cache: "git cache add \<URL\> [\<name\>]
|
- add a repository to the cache: "git cache add \<URL\>
|
||||||
- whenever needed (at least once after adding a repository),
|
- whenever needed (at least once after adding a repository),
|
||||||
run "git cache update"
|
run "git cache update"
|
||||||
|
|
||||||
|
70
dist/tools/git/git-cache
vendored
70
dist/tools/git/git-cache
vendored
@ -5,69 +5,70 @@ git_cache() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
set -ex
|
set -e
|
||||||
local _git_dir="$(git_cache rev-parse --git-dir 2>/dev/null)"
|
local _git_dir="$(git_cache rev-parse --git-dir 2>/dev/null)"
|
||||||
test "$_git_dir" == "." -o "$_git_dir" == ".git" || {
|
[ "$_git_dir" = "." -o "$_git_dir" = ".git" ] || {
|
||||||
mkdir -p "${GIT_CACHE_DIR}"
|
mkdir -p "${GIT_CACHE_DIR}"
|
||||||
|
|
||||||
git_cache init --bare
|
git_cache init --bare
|
||||||
git_cache config core.compression 1
|
git_cache config core.compression 1
|
||||||
}
|
}
|
||||||
set +ex
|
set +e
|
||||||
}
|
}
|
||||||
|
|
||||||
add() {
|
add() {
|
||||||
set -ex
|
set -e
|
||||||
if [ $# -eq 1 ]; then
|
|
||||||
local repo="$1"
|
local repo="$1"
|
||||||
local name="$(_remote_name $repo)"
|
local name="$(_remote_name $repo)"
|
||||||
else
|
|
||||||
local repo="$1"
|
|
||||||
local name="$2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! is_cached "$repo"; then
|
if ! is_cached "$repo"; then
|
||||||
git_cache remote add "$name" "$repo"
|
git_cache remote add "$name" "$repo"
|
||||||
else
|
else
|
||||||
echo "git-cache: $url already in cache"
|
echo "git-cache: $url already in cache"
|
||||||
fi
|
fi
|
||||||
set +ex
|
set +e
|
||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
set -ex
|
set -e
|
||||||
local REMOTE=${1:---all}
|
local REMOTE=${1:---all}
|
||||||
git_cache fetch $REMOTE
|
git_cache fetch $REMOTE
|
||||||
set +ex
|
set +e
|
||||||
}
|
}
|
||||||
|
|
||||||
is_cached() {
|
is_cached() {
|
||||||
set +ex
|
set +e
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local REMOTES="$(git_cache remote show)"
|
local REMOTES="$(git_cache remote show)"
|
||||||
for remote in $REMOTES; do
|
for remote in $REMOTES; do
|
||||||
test "$(git_cache remote get-url $remote)" == "$url" && return 0
|
[ "$(git_cache ls-remote --get-url $remote)" = "$url" ] && return 0
|
||||||
done
|
done
|
||||||
set -ex
|
set -e
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
list() {
|
list() {
|
||||||
local REMOTES="$(git_cache remote show)"
|
local REMOTES="$(git_cache remote show)"
|
||||||
for remote in $REMOTES; do
|
for remote in $REMOTES; do
|
||||||
echo "${remote}: $(git_cache remote get-url $remote)"
|
echo "$(git_cache ls-remote --get-url $remote)"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
drop() {
|
drop() {
|
||||||
set -ex
|
set -e
|
||||||
local REMOTE=${1}
|
local REMOTE=${1}
|
||||||
[ -z "$REMOTE" ] && {
|
[ -z "$REMOTE" ] && {
|
||||||
echo "usage: git cache drop <name>"
|
echo "usage: git cache drop <url>"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
git_cache remote remove $REMOTE
|
local REMOTES="$(git_cache remote show)"
|
||||||
set +ex
|
for remote in $REMOTES; do
|
||||||
|
[ "$(git_cache ls-remote --get-url $remote)" = "$REMOTE" ] && {
|
||||||
|
git_cache remote remove $remote
|
||||||
|
break
|
||||||
|
}
|
||||||
|
done
|
||||||
|
set +e
|
||||||
}
|
}
|
||||||
|
|
||||||
_check_commit() {
|
_check_commit() {
|
||||||
@ -75,33 +76,32 @@ _check_commit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_remote_name() {
|
_remote_name() {
|
||||||
basename "$*" .git
|
echo "$*" | md5sum | cut -d\ -f1
|
||||||
}
|
}
|
||||||
|
|
||||||
clone() {
|
clone() {
|
||||||
set -ex
|
set -e
|
||||||
local REMOTE="${1}"
|
local REMOTE="${1}"
|
||||||
local SHA1="${2}"
|
local SHA1="${2}"
|
||||||
local REMOTE_NAME="$(_remote_name $REMOTE)"
|
local REMOTE_NAME="$(_remote_name $REMOTE)"
|
||||||
local TARGET_PATH="${3:-${REMOTE_NAME}}"
|
local TARGET_PATH="${3:-${REMOTE_NAME}}"
|
||||||
|
|
||||||
if [ "$GIT_CACHE_AUTOADD" == "1" ]; then
|
if [ "$GIT_CACHE_AUTOADD" = "1" ]; then
|
||||||
if ! is_cached "$REMOTE"; then
|
if ! is_cached "$REMOTE"; then
|
||||||
|
echo "git cache: auto-adding $REMOTE"
|
||||||
add "$REMOTE"
|
add "$REMOTE"
|
||||||
update "$(_remote_name $REMOTE)"
|
update "$(_remote_name $REMOTE)"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if _check_commit $2 2>&1; then
|
if _check_commit $2 2>&1; then
|
||||||
git init "${TARGET_PATH}"
|
|
||||||
git_cache tag commit$SHA1 $SHA1 || true # ignore possibly already existing tag
|
git_cache tag commit$SHA1 $SHA1 || true # ignore possibly already existing tag
|
||||||
git -C "${TARGET_PATH}" fetch --tags --depth=1 "${GIT_CACHE_DIR}" refs/tags/commit$SHA1
|
git clone --reference "${GIT_CACHE_DIR}" "${GIT_CACHE_DIR}" "${TARGET_PATH}" --branch commit$SHA1
|
||||||
git -C "${TARGET_PATH}" checkout FETCH_HEAD
|
|
||||||
else
|
else
|
||||||
git clone "${REMOTE}" "${TARGET_PATH}"
|
git clone --reference "${GIT_CACHE_DIR}" "${REMOTE}" "${TARGET_PATH}"
|
||||||
git -C "${TARGET_PATH}" checkout $SHA1
|
git -C "${TARGET_PATH}" checkout $SHA1
|
||||||
fi
|
fi
|
||||||
set +ex
|
set +e
|
||||||
}
|
}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
@ -111,11 +111,10 @@ usage() {
|
|||||||
echo "usage:"
|
echo "usage:"
|
||||||
echo ""
|
echo ""
|
||||||
echo " git cache init initialize git cache"
|
echo " git cache init initialize git cache"
|
||||||
echo " git cache add <url> [<name>] add repository <url> with name <name>"
|
echo " git cache add <url> add repository <url>"
|
||||||
echo " (if no name given, use \"basename $url .git\""
|
|
||||||
echo " git cache list list cached repositories"
|
echo " git cache list list cached repositories"
|
||||||
echo " git cache drop <name> drop repo from cache"
|
echo " git cache drop <url> drop repo from cache"
|
||||||
echo " git cache update [<name>] fetch repo named <name> (or all)"
|
echo " git cache update [<url>] fetch repo <url> (or all)"
|
||||||
echo " git cache clone <url> <SHA1> clone repository <url> from cache"
|
echo " git cache clone <url> <SHA1> clone repository <url> from cache"
|
||||||
echo " git cache show-path print's the path that can be used as "
|
echo " git cache show-path print's the path that can be used as "
|
||||||
echo " '--reference' parameter"
|
echo " '--reference' parameter"
|
||||||
@ -124,8 +123,13 @@ usage() {
|
|||||||
echo ' git clone --reference $(git cache show-path) <repo>'
|
echo ' git clone --reference $(git cache show-path) <repo>'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ $# -eq 0 ] && {
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
ACTION=$1
|
ACTION=$1
|
||||||
shift
|
shift 1
|
||||||
|
|
||||||
export GIT_CACHE_DIR=${GIT_CACHE_DIR:-${HOME}/.gitcache}
|
export GIT_CACHE_DIR=${GIT_CACHE_DIR:-${HOME}/.gitcache}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user