fetchdarcs: add mirror support (#467172)
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
set -u
|
||||
|
||||
tagtext=""
|
||||
tagflags=""
|
||||
# Darcs hashes are sha1 (120 bits, 40-character hex)
|
||||
@@ -12,8 +14,19 @@ elif test -n "$context"; then
|
||||
tagflags="--context=$context"
|
||||
fi
|
||||
|
||||
echo "Cloning $url $partial ${tagtext} into $out"
|
||||
# Repository list may contain ?. No glob expansion for that.
|
||||
set -o noglob
|
||||
|
||||
darcs clone --lazy $tagflags "$url" "$out"
|
||||
# remove metadata, because it can change
|
||||
rm -rf "$out/_darcs"
|
||||
for repository in $repositories; do
|
||||
echo "Trying to clone $repository $tagtext into $out …"
|
||||
if darcs clone --lazy $tagflags "$repository" "$out"; then
|
||||
# remove metadata, because it can change
|
||||
rm -rf "$out/_darcs"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
|
||||
set +o noglob
|
||||
|
||||
echo "Error: couldn’t clone repository from any mirror" 1>&2
|
||||
exit 1
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
lib.makeOverridable (
|
||||
lib.fetchers.withNormalizedHash { } (
|
||||
{
|
||||
# Repository to fetch
|
||||
url,
|
||||
# Additional list of repositories specifying alternative download
|
||||
# location to be tried in order, if the prior repository failed to fetch.
|
||||
mirrors ? [ ],
|
||||
rev ? null,
|
||||
context ? null,
|
||||
outputHash ? lib.fakeHash,
|
||||
@@ -27,11 +31,12 @@ lib.makeOverridable (
|
||||
outputHashMode = "recursive";
|
||||
|
||||
inherit
|
||||
url
|
||||
rev
|
||||
context
|
||||
name
|
||||
;
|
||||
|
||||
repositories = [ url ] ++ mirrors;
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user