#!/bin/sh -ex # usage: git-repository--after-tarball [] # 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 } set_GIT_AUTHOR_DATE() { # taking date of first tarball, sorry for the other tarballs ;) tarball=$1 export GIT_AUTHOR_DATE=`stat -c '%y' "$RPM_SOURCE_DIR/$tarball"` } 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 . set_GIT_AUTHOR_DATE $tarballs git commit -q -a --author="unknown author " -m "imported $tarballs" git branch -f vanilla git branch -f patches-applied git checkout patches-applied