Spaces:
Runtime error
Runtime error
| # gh-pages cleanup script: Switches to gh-pages branch, and removes all | |
| # directories that aren't listed as remote branches | |
| function deslash () { | |
| # Recursively build a string of a directory's parents. E.g., | |
| # deslashed "feature/test/branch" returns feature/test feature | |
| deslashed=$(dirname $1) | |
| if [[ $deslashed =~ .*/.* ]] | |
| then | |
| echo $deslashed $(deslash $deslashed) | |
| else | |
| echo $deslashed | |
| fi | |
| } | |
| repository=origin | |
| if [[ $1 != "" ]] | |
| then | |
| repository=$1 | |
| fi | |
| # Cache current branch | |
| current=$(git rev-parse --abbrev-ref HEAD) | |
| # Checkout most recent gh-pages | |
| git fetch --force $repository gh-pages:gh-pages | |
| git checkout gh-pages | |
| git clean -fdx | |
| # Make an array of directories to not delete, from the list of remote branches | |
| branches=$(git ls-remote --refs --quiet $repository | awk '{print $2}' | sed -e 's/refs\/heads\///') | |
| # Add parent directories of branches to the exclusion list (e.g. greenkeeper/) | |
| for branch in $branches; do | |
| if [[ $branch =~ .*/.* ]]; then | |
| branches+=" $(deslash $branch)" | |
| fi | |
| done | |
| # Dedupe all the greenkeepers (or other duplicate parent directories) | |
| branches=$(echo "${branches[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ') | |
| # Remove all directories that don't have corresponding branches | |
| # It would be nice if we could exclude everything in .gitignore, but we're | |
| # not on the branch with the .gitignore anymore... so we can't. | |
| find . -type d \ | |
| \( \ | |
| -path ./.git -o \ | |
| -path ./node_modules \ | |
| $(printf " -o -path ./%s" $branches) \ | |
| \) -prune \ | |
| -o -mindepth 1 -type d \ | |
| -exec rm -rfv {} \; | |
| # Push | |
| git add -u | |
| git commit -m "Remove stale directories" | |
| git push $repository gh-pages | |
| # Return to where we were | |
| git checkout -f $current | |
| exit | |