Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
#!/bin/bash
function clean_dir() {
files_to_remove=`ls | grep -v 'composer\.json'`
if [[ "$files_to_remove" ]]; then
rm -r $files_to_remove > /dev/null 2>&1
fi
}
LOCK_FILE='/tmp/updating_wordpress'
if [ -e $LOCK_FILE ]; then
howold=$(($(date +%s) - $(stat -c %Y /tmp/updating_wordpress)))
if [ $howold -lt 2101 ]; then
exit 0
fi
kill -15 $(cat $LOCK_FILE)
rm $LOCK_FILE
fi
echo $$ > $LOCK_FILE
if [ $# -gt 0 ]; then
WP_DIR="$1"
else
WP_DIR='/home/johnpbloch/WP2'
fi
cd $WP_DIR;
# Get all WP Branches
WP_BRANCHES=`curl http://core.svn.wordpress.org/branches/ 2>/dev/null | sed -r 's/.+>([0-9]+(\.[0-9]+)+)\/<.+/\1/;tx;d;:x' | sort -V`
# Get all WP Tags
WP_TAGS=`curl http://core.svn.wordpress.org/tags/ 2>/dev/null | sed -r 's/.+>([0-9]+(\.[0-9]+)+)\/<.+/\1/;tx;d;:x' | sort -V`
# Get all local branches
BRANCHES=`git branch | sed -r 's/.* ([a-zA-Z0-9\.\-\_\/]+).*/\1/' | sort -V`
# Get all local tags
TAGS=`git tag | sort -V`
STARTING_POINT='e653290b75a52096497a85fefd444f647590c06c'
for branch in $WP_BRANCHES; do
if [[ ! `echo "$BRANCHES" | grep -P "^$branch$"` ]]; then
git branch $branch $STARTING_POINT > /dev/null 2>&1
fi
git checkout $branch > /dev/null 2>&1
branch_tags=`echo "$WP_TAGS" | grep -P "^$branch"`
for tag in $branch_tags; do
if [[ ! `echo "$TAGS" | grep -P "^$tag$"` ]]; then
clean_dir
svn export --force --ignore-externals "http://core.svn.wordpress.org/tags/$tag/" . > /dev/null 2>&1
git add -A . > /dev/null 2>&1
git commit -m "Importing version $tag" > /dev/null 2>&1
git tag "$tag" > /dev/null 2>&1
fi
done
clean_dir
svn export --force --ignore-externals "http://core.svn.wordpress.org/branches/$branch/" . > /dev/null 2>&1
git add -A . > /dev/null 2>&1
git commit -m "Updating $branch branch head" > /dev/null 2>&1
done
git checkout master > /dev/null 2>&1
clean_dir
svn export --force --ignore-externals "http://core.svn.wordpress.org/trunk/" . > /dev/null 2>&1
git add -A . #> /dev/null 2>&1
git commit -m "Update trunk" > /dev/null 2>&1
git push > /dev/null 2>&1
git push --tags > /dev/null 2>&1
rm $LOCK_FILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment