aboutsummaryrefslogtreecommitdiffstats
path: root/git-repository--after-tarball
blob: 5fda90954ed08446b0135268deb2f1e45267bc0a (plain)
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
55
56
57
58
59
60
61
62
63
#!/bin/sh -ex

# usage: git-repository--after-tarball [<tarballs>]
# with optional environment variables:
# - GIT_URL="git://xxx/foo.git [branch]"
# - GIT_REPOSITORY_CACHE=/zzz/foo.git
#
# the GIT_REPOSITORY_CACHE can be used with or without GIT_URL
# - if GIT_URL is given, GIT_REPOSITORY_CACHE will be a "bare" clone of GIT_URL
# - otherwise, GIT_REPOSITORY_CACHE can be created using:
#   % git clone --bare BUILD/foo-1 $GIT_REPOSITORY_CACHE
#   where foo-1 is the previous version


tarballs="$*"


git_clone_in_cwd() {
    URL=$1
    [ -n "$2" ] && BRANCH="origin/$2"

    git clone $URL .git-tmp

    cd .git-tmp
    git checkout $BRANCH
    cd ..

    mv .git-tmp/.git .
    rm -r .git-tmp
}

our_git_clone() {
    URL=$1
    HEAD=$2

    if [ -n "$GIT_REPOSITORY_CACHE" ]; then
      if [ -d "$GIT_REPOSITORY_CACHE" ]; then
        cd "$GIT_REPOSITORY_CACHE"
	git fetch $GIT_URL
        cd -
      else
        git clone --bare $URL "$GIT_REPOSITORY_CACHE"	
      fi
      git_clone_in_cwd "$GIT_REPOSITORY_CACHE" $HEAD
    else
      git_clone_in_cwd $URL $HEAD
    fi
}

if [ ! -e .git ]; then
  if [ -n "$GIT_URL" ]; then
    our_git_clone $GIT_URL
  elif [ -n "$GIT_REPOSITORY_CACHE" -a -d "$GIT_REPOSITORY_CACHE" ]; then
    git_clone_in_cwd "$GIT_REPOSITORY_CACHE" vanilla
  else
    git init
  fi
fi
git add . 
git commit -q -a -m "imported $tarballs" 
git branch -f vanilla
git branch -f patches-applied
git checkout patches-applied