Merge pull request #1123 from ceph/galaxy

contrib: add a goto basedir function
pull/1124/head
Sébastien Han 2016-11-28 14:35:35 +01:00 committed by GitHub
commit 9281a564f2
2 changed files with 9 additions and 70 deletions

View File

@ -9,6 +9,13 @@ ROLES="ceph-common ceph-mon ceph-osd ceph-mds ceph-rgw ceph-restapi ceph-agent c
# FUNCTIONS
function goto_basedir {
TOP_LEVEL=$(cd $BASEDIR && git rev-parse --show-toplevel)
if [[ "$(pwd)" != "$TOP_LEVEL" ]]; then
pushd $TOP_LEVEL
fi
}
function check_existing_remote {
if ! git remote show $1 &> /dev/null; then
git remote add $1 git@github.com:/ceph/ansible-$1.git
@ -42,6 +49,7 @@ function check_git_status {
# MAIN
goto_basedir
check_git_status
trap reset_hard_origin EXIT
trap reset_hard_origin ERR
@ -68,3 +76,4 @@ for ROLE in $ROLES; do
reset_hard_origin
done
done
popd &> /dev/null

View File

@ -1,70 +0,0 @@
#!/bin/bash
set -xe
# VARIABLES
BASEDIR=$(dirname "$0")
LOCAL_BRANCH=$(cd $BASEDIR && git rev-parse --abbrev-ref HEAD)
BRANCHES="master ansible-1.9"
ROLES="ceph-common ceph-mon ceph-osd ceph-mds ceph-rgw ceph-restapi ceph-agent ceph-fetch-keys ceph-rbd-mirror ceph-client"
# FUNCTIONS
function check_existing_remote {
if ! git remote show $1 &> /dev/null; then
git remote add $1 git@github.com:/ceph/ansible-$1.git
fi
}
function pull_origin {
git pull origin --tags
}
function reset_hard_origin {
# let's bring everything back to normal
git checkout $LOCAL_BRANCH
git fetch origin
git fetch --tags
git reset --hard origin/master
}
function check_git_status {
if [[ $(git status --porcelain | wc -l) -gt 0 ]]; then
echo "It looks like the following changes haven't been committed yet"
echo ""
git status --short
echo ""
echo ""
echo "Do you really want to continue?"
echo "Press ENTER to continue or CTRL C to break"
read
fi
}
# MAIN
check_git_status
trap reset_hard_origin EXIT
trap reset_hard_origin ERR
pull_origin
for ROLE in $ROLES; do
# For readability we use 2 variables with the same content
# so we always make sure we 'push' to a remote and 'filter' a role
REMOTE=$ROLE
check_existing_remote $REMOTE
reset_hard_origin
# First we filter branches by rewriting master with the content of roles/$ROLE
# this gives us a new commit history
for BRANCH in $BRANCHES; do
git checkout -B $BRANCH origin/$BRANCH
git filter-branch -f --prune-empty --subdirectory-filter roles/$ROLE
git push $REMOTE $BRANCH
done
reset_hard_origin
# then we filter tags starting from version 2.0 and push them
for TAG in $(git tag | egrep '^v[2-9].[0-9]*.[0-9]*$'); do
git filter-branch -f --prune-empty --subdirectory-filter roles/$ROLE $TAG
git push $REMOTE $TAG
reset_hard_origin
done
done