diff options
Diffstat (limited to 'git-repository--after-tarball')
-rwxr-xr-x | git-repository--after-tarball | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/git-repository--after-tarball b/git-repository--after-tarball new file mode 100755 index 0000000..5fda909 --- /dev/null +++ b/git-repository--after-tarball @@ -0,0 +1,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 |