-
Notifications
You must be signed in to change notification settings - Fork 0
/
farm-checkout.in
54 lines (48 loc) · 1.15 KB
/
farm-checkout.in
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /bin/bash
# Check out source trees from a Linux git repository
set -e
prefix=@prefix@
datarootdir=@datarootdir@
confdir=@datadir@/@PACKAGE_NAME@
. ${confdir}/farm-lib.sh
set_trap
mkdir -p $farmsrc
mkdir -p $farmgit
error=
for tag in $tags; do
dirname=$(echo $tag | sed 's,/,-,')
srctree=$farmsrc/$dirname
gittree=$farmgit/$dirname
echo -n "Checking out $srctree "
if test -d $srctree && test -d $gittree; then
if myrev=$(git --git-dir=$gittree rev-parse HEAD) &&
tagrev=$(git --git-dir=$gittree rev-parse $tag^0) &&
test "$myrev" = "$tagrev"; then
echo_cyan "Up to date"
else
echo_magenta "Out of date"
fi
continue
fi
if rm -rf $srctree $gittree &&
git clone --quiet --shared --mirror $linuxgit $gittree &&
git --git-dir=$gittree config core.bare false &&
git --git-dir=$gittree config core.worktree $srctree &&
mkdir $srctree &&
echo "gitdir: $gittree" >$srctree/.git &&
git --git-dir=$gittree checkout --quiet $tag --; then
echo_green "OK"
else
error=1
rm -rf $srctree
echo_red "ERROR"
fi
done
unset_trap
if test -z "$error"; then
echo_green "All OK"
exit 0
else
echo_red "Errors found"
exit 1
fi