fetchgit builder rewrite to handle more cases
The old builder failed for: - remote HEAD != master - local repositories svn path=/nixpkgs/trunk/; revision=26984
This commit is contained in:
parent
ead24cacdf
commit
a8c3649dd4
@ -2,19 +2,22 @@ source $stdenv/setup
|
|||||||
|
|
||||||
header "exporting $url (rev $rev) into $out"
|
header "exporting $url (rev $rev) into $out"
|
||||||
|
|
||||||
git clone "$url" $out
|
git init $out
|
||||||
if test -n "$rev"; then
|
|
||||||
cd $out
|
cd $out
|
||||||
|
git remote add origin "$url"
|
||||||
|
git fetch origin
|
||||||
|
git remote set-head origin -a
|
||||||
|
|
||||||
# Track all remote branches so that revisions like
|
# If no revision was specified, the remote HEAD will be used
|
||||||
# `t/foo@{2010-05-12}' are correctly resolved. Failing to do that,
|
git checkout -b __nixos_build__ origin/HEAD
|
||||||
# Git bails out with an "invalid reference" error.
|
|
||||||
for branch in $(git branch -rl | grep -v ' origin/master$')
|
|
||||||
do
|
|
||||||
git branch --track "$(echo $branch | sed -es,origin/,,g)" "$branch"
|
|
||||||
done
|
|
||||||
|
|
||||||
git checkout "$rev" --
|
if test -n "$rev"; then
|
||||||
|
echo "Trying to checkout: $rev"
|
||||||
|
parsed_rev=$(
|
||||||
|
git rev-parse --verify "$rev" 2>/dev/null ||
|
||||||
|
git rev-parse --verify origin/"$rev" 2>/dev/null
|
||||||
|
)
|
||||||
|
git reset --hard $parsed_rev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -z "$leaveDotGit"; then
|
if test -z "$leaveDotGit"; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user