Managing a WordPress 2.6 installation with Subversion
Transcript of Managing a WordPress 2.6 installation with Subversion
Managing a WordPress 2.6 installation with SubversionSam Bauers - Automattic
In this presentation...
- Overview of version control and Subversion
- Anatomy changes in WordPress 2.6
- Creating a “clean” WordPress install
- Creating a Subversion project that incorporates WordPress
- Early adopter pitfalls
WordPress 2.6 + Subversion
Version control
WordPress 2.6 + Subversion
WordPress 2.6 + Subversion
Repository
Version control
WordPress 2.6 + Subversion
RepositoryWorking
copy
Version control
WordPress 2.6 + Subversion
RepositoryWorking
copy
Version control
Version control
WordPress 2.6 + Subversion
RepositoryWorking
copy
Version control
WordPress 2.6 + Subversion
RepositoryWorking
copyWorking
copy
Version control
WordPress 2.6 + Subversion
RepositoryWorking
copyWorking
copy
Version control
WordPress 2.6 + Subversion
Version control
WordPress 2.6 + Subversion
Revision 14
Sam
Tony
Version control
WordPress 2.6 + Subversion
Revision 14
Sam
Tony
Revision 14
Version control
WordPress 2.6 + Subversion
Revision 14
Sam
Tony
Revision 14
Revision 14
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15
Sam
Tony
Revision 14
Revision 15
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15
Sam
Tony
Revision 15
Revision 15
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15 Revision 16
Sam
Tony
Revision 15
Revision 16
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15 Revision 16 Revision 17
Sam
Tony
Revision 15
Revision 17
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15 Revision 16 Revision 17
Sam
Tony
Revision 17
Revision 17
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15 Revision 16 Revision 17
Sam
Tony
Revision 18
Revision 17
Revision 18
Version control
WordPress 2.6 + Subversion
Revision 14 Revision 15 Revision 16 Revision 17
Sam
Tony
Revision 18
Revision 18
Revision 18
Version control
WordPress 2.6 + Subversion
Version control
WordPress 2.6 + Subversion
You
Server
Version control
WordPress 2.6 + Subversion
Revision 1
You
Server
Revision 1
Version control
WordPress 2.6 + Subversion
Revision 1
You
Server
Revision 1
Revision 1
Version control
WordPress 2.6 + Subversion
Revision 1 Revision 2 Revision 3 Revision 4
You
Server
Revision 5
Revision 5
Revision 5
Version control
WordPress 2.6 + Subversion
Revision 1 Revision 2 Revision 3 Revision 4
You
Server
Revision 5
Revision 5
Revision 5
Version control
WordPress 2.6 + Subversion
Revision 1 Revision 2 Revision 3 Revision 4
You
Server
Revision 5
Revision 3
Revision 5
Version control
WordPress 2.6 + Subversion
Revision 1 Revision 2 Revision 3 Revision 4
You
Server
Revision 5
Revision 3
Revision 5
Version control
- Revision history
- Annotated
- Time stamped
- User accountable
WordPress 2.6 + Subversion
Version control
- Code development
- Multiple developers
- Structured workflow
- Conflict resolution when updating and merging
- Potentially remote
- Branching and tagging
- Maintain experimental and stable versions
- Tag releases as perpetual snapshots
WordPress 2.6 + Subversion
Version control
- Server deployment
- Single command to deploy
- Mostly automatic conflict resolution
- Version rollback
- Version synchronisation across multiple servers
- Potentially scriptable
WordPress 2.6 + Subversion
Subversion
WordPress 2.6 + Subversion
Subversion
- Centralised version control system
- Works over http and https via Apache webserver
- Used by Automattic
- WordPress and bbPress
- Plugin repositories
- WordPress.com
- Server config files
- Design documents - Photoshop, Illustrator, etc.
WordPress 2.6 + Subversion
Subversion
http://svnbook.red-bean.com
WordPress 2.6 + Subversion
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
A
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
B
WordPress 2.6 anatomy
WordPress 2.6 + Subversion
AB
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
Assumptions
- Installing in root directory of the domain
- Domain is example.com
- Path to root directory of website is /var/www/root/
- Access to rewrite rules for permalinks
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
Now install WordPress at
http://example.com/wordpress
Don’t change any settings yet!
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
> mkdir themes
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
> mkdir themes
> cd themes
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
> mkdir themes
> cd themes
> ln -s ../../wordpress/wp-content/themes/default
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
> mkdir themes
> cd themes
> ln -s ../../wordpress/wp-content/themes/default
> cd ..
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
> mkdir themes
> cd themes
> ln -s ../../wordpress/wp-content/themes/default
> cd ..
“Clean” WordPress
WordPress 2.6 + Subversion
> cd /var/www/root/
> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress
> mv wordpress/wp-config.php wp-config.php
> mkdir wordpress-content
> cd wordpress-content
> mkdir plugins
> cd plugins
> ln -s ../../wordpress/wp-content/plugins/akismet
> cd ..
> mkdir themes
> cd themes
> ln -s ../../wordpress/wp-content/themes/default
> cd ..
> mkdir uploads
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
“Clean” WordPress
WordPress 2.6 + Subversion
WordPress inside aSubversion project
WordPress 2.6 + Subversion
WordPress inside a Subversion project
- Store your own code inside a subversion project
- Include WordPress as an “external” repository
- Ignore certain directories
WordPress 2.6 + Subversion
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
wordpress http://svn.automattic.com/wordpress/branches/2.6
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
> svn propedit --editor-cmd nano svn:ignore wordpress-content
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
uploads
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
uploads
cache
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
> svn propedit --editor-cmd nano svn:ignore wordpress-content
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
> svn propedit --editor-cmd nano svn:ignore wordpress-content
> svn status
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
> svn propedit --editor-cmd nano svn:ignore wordpress-content
> svn status
M .
M wordpress-content
Performing status on external item at 'wordpress'
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
> svn propedit --editor-cmd nano svn:ignore wordpress-content
> svn status
M .
M wordpress-content
Performing status on external item at 'wordpress'
> svn commit -m “Add WordPress external and ignore certain content directories”
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals .
> svn propedit --editor-cmd nano svn:ignore wordpress-content
> svn status
M .
M wordpress-content
Performing status on external item at 'wordpress'
> svn commit -m “Add WordPress external and ignore certain content directories”
> svn update
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
GNU nano 2.0.1 File: svn-prop.tmp Modified
wp-stats http://svn.wp-plugins.org/wp-stats/tags/2.31
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins
> svn update
WordPress inside a Subversion project
WordPress 2.6 + Subversion
> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins
> svn update
Fetching external item into 'wordpress-content/plugins/wp-stats'
Early adopter pitfalls
WordPress 2.6 + Subversion
Early adopter pitfalls
- Plugins
- Many attempt to include wp-config.php
- They need to include wp-load.php
- They may need to manually set the path to it
- PLUGINDIR is deprecated, use WP_PLUGIN_DIR
- Use WP_PLUGIN_URL to construct URLs
- Beware AJAX plugins - they must use the API
WordPress 2.6 + Subversion
Early adopter pitfalls
- Themes
- Use get_theme_root()
- Use get_theme_root_uri()
WordPress 2.6 + Subversion
Early adopter pitfalls
- Directory and file permissions
- Stop WordPress from editing .htaccess
- Remember to open up uploads
WordPress 2.6 + Subversion
Happy subverting!
WordPress 2.6 + Subversion