about summary refs log tree commit diff
path: root/pkgs/build-support/fetchgit/builder.sh
blob: ed3af4a7ab61828195fed38af52d8dd8ff2f70b9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# tested so far with:
# - no revision specified and remote has a HEAD which is used
# - revision specified and remote has a HEAD
# - revision specified and remote without HEAD
source $stdenv/setup

header "exporting $url (rev $rev) into $out"

git init $out
cd $out
git remote add origin "$url"
git fetch --progress origin
git remote set-head origin -a || (
    test -n "$rev" && echo "that's ok, we want $rev" || exit 1)

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
    git checkout -b __nixos_build__
else
    git checkout -b __nixos_build__ origin/HEAD
fi

if test -z "$leaveDotGit"; then
    find $out -name .git\* | xargs rm -rf
fi

stopNest