summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/gitcreate58
1 files changed, 38 insertions, 20 deletions
diff --git a/bin/gitcreate b/bin/gitcreate
index c4b8230..07528c3 100755
--- a/bin/gitcreate
+++ b/bin/gitcreate
@@ -2,24 +2,42 @@
set -xe
-GIT_USER=
-GIT_HOSTNAME=
-GIT_SSH_PORT=22
-
-PREFIX=$(echo `basename $0` | cut -d"-" -f1)
-. ~/.buildscripts/$PREFIX.conf
-
-for pkg in "$@"; do
- subdir=$(dirname $pkg)/
- pkg=$(basename $pkg)
- ssh -l$GIT_USER $GIT_HOSTNAME "cd ~/git && ./setup-repository ${subdir}${pkg} '$pkg upstream project'"
- ssh -l$GIT_USER $GIT_HOSTNAME "cd ~/git && ./update-repository-posixacls ${subdir}${pkg}"
- test -d "$pkg" && cd "$pkg"
- echo "$pkg: MASTER BRANCH" && git push ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg} master
- git branch | grep upstream &>/dev/null && echo "$pkg: RELEASE BRANCH" && git push ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg} upstream
- git branch | grep pristine-tar &>/dev/null && echo "$pkg: PRISTINE-TAR" && git push ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg} pristine-tar
- echo "$pkg: PUSHING TAGS" && git push --tags ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg}
- git remote | grep origin >/dev/null || git remote add origin ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg}
- git remote add ${PREFIX}-public ssh://$GIT_USER@$GIT_HOSTNAME:$GIT_SSH_PORT/~/git/${subdir}${pkg}
- cd ..
+GIT_USER=""
+GIT_HOSTNAME=""
+GIT_SSH_PORT="22"
+
+PREFIX="$(echo $(basename "${0}") | cut -d"-" -f1)"
+. ~/.buildscripts/"${PREFIX}.conf"
+
+for pkg in "${@}"; do
+ subdir="$(dirname ${pkg})/"
+ pkg="$(basename ${pkg})"
+
+ ssh -l"${GIT_USER}" "${GIT_HOSTNAME}" "cd ~/git && ./setup-repository ${subdir}${pkg} '${pkg} upstream project'"
+ ssh -l"${GIT_USER}" "${GIT_HOSTNAME}" "cd ~/git && ./update-repository-posixacls ${subdir}${pkg}"
+
+ POP="0"
+ if [ -d "${pkg}" ]; then
+ pushd "${pkg}"
+ POP="1"
+ else
+ # Use some heuristics to find out if we're already in the directory.
+ # The current working dir must begin with the string given as parameter.
+ # Suffixes like .git, -git or the like can be used without making this check fail.
+ CUR_DIR="$(basename "$(pwd)")"
+ CUR_DIR="${CUR_DIR:0:${#pkg}}"
+ if [ "${CUR_DIR}" != "${pkg}" ]; then
+ echo "Package '${pkg}' does not exist!" >&2
+ exit 1
+ fi
+ fi
+
+ echo "${pkg}: MASTER BRANCH" && git push "ssh://${GIT_USER}@${GIT_HOSTNAME}:${GIT_SSH_PORT}/~/git/${subdir}${pkg}" master
+ git branch | grep upstream &>/dev/null && echo "${pkg}: RELEASE BRANCH" && git push "ssh://${GIT_USER}@${GIT_HOSTNAME}:${GIT_SSH_PORT}/~/git/${subdir}${pkg}" upstream
+ git branch | grep pristine-tar &>/dev/null && echo "${pkg}: PRISTINE-TAR" && git push "ssh://${GIT_USER}@${GIT_HOSTNAME}:${GIT_SSH_PORT}/~/git/${subdir}${pkg}" pristine-tar
+ echo "${pkg}: PUSHING TAGS" && git push --tags "ssh://${GIT_USER}@${GIT_HOSTNAME}:${GIT_SSH_PORT}/~/git/${subdir}${pkg}"
+ git remote | grep origin >/dev/null || git remote add origin "ssh://${GIT_USER}@${GIT_HOSTNAME}:${GIT_SSH_PORT}/~/git/${subdir}${pkg}"
+ git remote add "${PREFIX}-public" "ssh://${GIT_USER}@${GIT_HOSTNAME}:${GIT_SSH_PORT}/~/git/${subdir}${pkg}"
+
+ [ "${POP}" = "1" ] && popd
done