This opinionated script is about forgetting that you have to deal with SVN for publishing your WordPress plugin to the official repository.
It handles:
- Syncing your assets (only updates them if needed)
- Syncing your tags (only pushes tags that do not yet exist)
- Syncing your trunk (only updates if changes are detected)
./sync.sh \
--plugin-name="search-by-algolia-instant-relevant-results" \
--git-repo="https://github.com/algolia/algoliasearch-wordpress" \
--svn-user=algolia
This will sync your assets, push all tags that do not exist yet and update the trunk.
By default, the script expects your assets to be in a directory named
.wordpress.org
at the root of your Git repository.
You can customize this by providing a relative path to your assets directory:
./sync.sh \
--plugin-name="search-by-algolia-instant-relevant-results" \
--git-repo="https://github.com/algolia/algoliasearch-wordpress" \
--svn-user=algolia \
--assets-dir="screenshots"
./sync.sh \
--plugin-name="mailjet-for-wordpress" \
--git-repo="https://github.com/mailjet/wordpress-mailjet-plugin-apiv3" \
--svn-user=Mailjet \
--assets-dir="assets"
./sync.sh --plugin-name="mailgun" --git-repo="https://github.com/mailgun/wordpress-plugin" --svn-user=omykhailenko --assets-dir="assets"
Here the script will push the assets from your-git-root/screenshots
directory.
Note that the script will also always try to remove the assets-dir from the trunk and tags releases.
To exclude files from synchronization, you just need to drop a file named
.distignore
in the root of your Git repository.
This file should be formatted just like a .gitignore file.
Checkout an example of .distignore
file here.
The script will then expand every line and exclude matching files from synchronization.
- Your plugin must have been accepted, and you should have the plugin slug name.
- Have a
.wordpress.org
directory containing the screenshots to be displayed on the detail page on the plugin directory. - Have a master branch that contains the most up to date version of your plugin. Your plugin files should be held at the root of the repository.
- Tag your releases with Git if you want to push tags.