- Install Node, NPM, and grunt-cli globally if not already installed.
- Install grunt-init globally if not already installed.
npm install -g grunt-init
- Install composer to usr/local/bin/composer if not already installed
- Switch to this git repository directory
- Install node modules
npm install- BTW On OSX you generally need
sudoto make this work.
- Work is put into
2.xbranch from various feature branches - Create Pull Request from
2.xbranch intomaster - Once verified passing all unit tests, and the release has changelog, merge PR
- Fetch latest origin from GitHub (THIS IS IMPORTANT)
- Ensure your
masterhas pulled from the latest version, with no uncommitted changes - Ensure your Git repo has
mastercurrently checked out - LATER: We should improve this so it's done automatically in the script
- Ensure your
- Set new version in
package.json(it might be something like2.6.4-a-1)- LATER: Would be great if running
grunt releasewould ask for the version number to save a step
- LATER: Would be great if running
- Run
grunt release, which will run the following tasks:- Update branch name in README.md and init.php to
master - Update version number in readme.txt (stable tag) and init.php
- Checks out WordPress.org SVN
- Copies latest changes into
trunk(NOTE This does not handle deleting files, something to come back to later) - Commits to WP SVN
trunkwith messagePods {version} - Copies WP SVN
trunkinto tagtags/{version} - Commits branch and version number changes in files to GitHub with commit message as version number
Pods {version} - Tags
masteras version number2.x/{version} - Pushes
masterand new tag (NOTE This is not currently happening right now, you need to manually push the master branch and the new tag) - Removes temporary files (WP SVN)
- Update branch name in README.md and init.php to
- Changes version number in all the places that is needed.
- Makes branch name changes in various places.
- Commits to WordPress.org SVN
trunkandtags/{version} - Commits, pushes to GitHub
master - Tags
masterto2.x/{version}
- Checkout
2.xand ensure you've pulled the latest changes. From Terminal,git checkout 2.x. - Merge
masterbranch into2.xto bring over the latest release changes. From Terminal,git merge master. - Set new version in
package.jsonto next incremental version with Alpha like2.6.4-a-1 - Run
grunt version_numberto update the version number in all related files - Run
grunt branch_name_2xto update the branch numbers in all files - Commit changes to 2.x and push. From Terminal,
git commit -a -m "Prepping 2.x"followed bygit push. - LATER: We could do the 2.x checkout, master merge, prompt for new version number, run the other grunt tasks and commit/push to Git all in a new grunt task like
grunt prepare_next_release
- Don't do a full SVN checkout, make use of partial checkouts (because of /tags/)