Managing a WordPress 2.6 installation with Subversion

101
Managing a WordPress 2.6 installation with Subversion Sam Bauers - Automattic

Transcript of Managing a WordPress 2.6 installation with Subversion

Page 1: Managing a WordPress 2.6 installation with Subversion

Managing a WordPress 2.6 installation with SubversionSam Bauers - Automattic

Page 2: Managing a WordPress 2.6 installation with Subversion

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

Page 3: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Page 4: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 + Subversion

Repository

Version control

Page 5: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 + Subversion

RepositoryWorking

copy

Version control

Page 6: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 + Subversion

RepositoryWorking

copy

Version control

Page 7: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

RepositoryWorking

copy

Page 8: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

RepositoryWorking

copyWorking

copy

Page 9: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

RepositoryWorking

copyWorking

copy

Page 10: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Page 11: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14

Sam

Tony

Page 12: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14

Sam

Tony

Revision 14

Page 13: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14

Sam

Tony

Revision 14

Revision 14

Page 14: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15

Sam

Tony

Revision 14

Revision 15

Page 15: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15

Sam

Tony

Revision 15

Revision 15

Page 16: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15 Revision 16

Sam

Tony

Revision 15

Revision 16

Page 17: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15 Revision 16 Revision 17

Sam

Tony

Revision 15

Revision 17

Page 18: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15 Revision 16 Revision 17

Sam

Tony

Revision 17

Revision 17

Page 19: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15 Revision 16 Revision 17

Sam

Tony

Revision 18

Revision 17

Revision 18

Page 20: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 14 Revision 15 Revision 16 Revision 17

Sam

Tony

Revision 18

Revision 18

Revision 18

Page 21: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Page 22: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

You

Server

Page 23: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 1

You

Server

Revision 1

Page 24: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 1

You

Server

Revision 1

Revision 1

Page 25: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 1 Revision 2 Revision 3 Revision 4

You

Server

Revision 5

Revision 5

Revision 5

Page 26: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 1 Revision 2 Revision 3 Revision 4

You

Server

Revision 5

Revision 5

Revision 5

Page 27: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 1 Revision 2 Revision 3 Revision 4

You

Server

Revision 5

Revision 3

Revision 5

Page 28: Managing a WordPress 2.6 installation with Subversion

Version control

WordPress 2.6 + Subversion

Revision 1 Revision 2 Revision 3 Revision 4

You

Server

Revision 5

Revision 3

Revision 5

Page 29: Managing a WordPress 2.6 installation with Subversion

Version control

- Revision history

- Annotated

- Time stamped

- User accountable

WordPress 2.6 + Subversion

Page 30: Managing a WordPress 2.6 installation with 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

Page 31: Managing a WordPress 2.6 installation with 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

Page 32: Managing a WordPress 2.6 installation with Subversion

Subversion

WordPress 2.6 + Subversion

Page 33: Managing a WordPress 2.6 installation with 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

Page 34: Managing a WordPress 2.6 installation with Subversion

Subversion

http://svnbook.red-bean.com

WordPress 2.6 + Subversion

Page 35: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

Page 36: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

Page 37: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

A

Page 38: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

Page 39: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

Page 40: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

Page 41: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

B

Page 42: Managing a WordPress 2.6 installation with Subversion

WordPress 2.6 anatomy

WordPress 2.6 + Subversion

AB

Page 43: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 44: Managing a WordPress 2.6 installation with 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

Page 45: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

> cd /var/www/root/

Page 46: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

> cd /var/www/root/

> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress

Page 47: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 48: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Now install WordPress at

http://example.com/wordpress

Don’t change any settings yet!

Page 49: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

> cd /var/www/root/

> svn checkout http://svn.automattic.com/wordpress/branches/2.6 wordpress

Page 50: Managing a WordPress 2.6 installation with 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

Page 51: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 52: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 53: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 54: Managing a WordPress 2.6 installation with 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

Page 55: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

Page 56: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

Page 57: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

Page 58: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

Page 59: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

> cd plugins

Page 60: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

> cd plugins

> ln -s ../../wordpress/wp-content/plugins/akismet

Page 61: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

> cd plugins

> ln -s ../../wordpress/wp-content/plugins/akismet

> cd ..

Page 62: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

> cd plugins

> ln -s ../../wordpress/wp-content/plugins/akismet

> cd ..

Page 63: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

> cd plugins

> ln -s ../../wordpress/wp-content/plugins/akismet

> cd ..

> mkdir themes

Page 64: Managing a WordPress 2.6 installation with 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

> mkdir wordpress-content

> cd wordpress-content

> mkdir plugins

> cd plugins

> ln -s ../../wordpress/wp-content/plugins/akismet

> cd ..

> mkdir themes

> cd themes

Page 65: Managing a WordPress 2.6 installation with 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

> 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

Page 66: Managing a WordPress 2.6 installation with 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

> 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 ..

Page 67: Managing a WordPress 2.6 installation with 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

> 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 ..

Page 68: Managing a WordPress 2.6 installation with 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

> 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

Page 69: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 70: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 71: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 72: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 73: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 74: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 75: Managing a WordPress 2.6 installation with Subversion

“Clean” WordPress

WordPress 2.6 + Subversion

Page 76: Managing a WordPress 2.6 installation with Subversion

WordPress inside aSubversion project

WordPress 2.6 + Subversion

Page 77: Managing a WordPress 2.6 installation with 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

Page 78: Managing a WordPress 2.6 installation with Subversion

WordPress inside a Subversion project

WordPress 2.6 + Subversion

> svn propedit --editor-cmd nano svn:externals .

Page 79: Managing a WordPress 2.6 installation with Subversion

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

Page 80: Managing a WordPress 2.6 installation with Subversion

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

Page 81: Managing a WordPress 2.6 installation with Subversion

WordPress inside a Subversion project

WordPress 2.6 + Subversion

> svn propedit --editor-cmd nano svn:externals .

Page 82: Managing a WordPress 2.6 installation with Subversion

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

Page 83: Managing a WordPress 2.6 installation with Subversion

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

Page 84: Managing a WordPress 2.6 installation with Subversion

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

Page 85: Managing a WordPress 2.6 installation with Subversion

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

Page 86: Managing a WordPress 2.6 installation with Subversion

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

Page 87: Managing a WordPress 2.6 installation with Subversion

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

Page 88: Managing a WordPress 2.6 installation with Subversion

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'

Page 89: Managing a WordPress 2.6 installation with Subversion

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”

Page 90: Managing a WordPress 2.6 installation with Subversion

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

Page 91: Managing a WordPress 2.6 installation with Subversion

WordPress inside a Subversion project

WordPress 2.6 + Subversion

> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins

Page 92: Managing a WordPress 2.6 installation with Subversion

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

Page 93: Managing a WordPress 2.6 installation with Subversion

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

Page 94: Managing a WordPress 2.6 installation with Subversion

WordPress inside a Subversion project

WordPress 2.6 + Subversion

> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins

Page 95: Managing a WordPress 2.6 installation with Subversion

WordPress inside a Subversion project

WordPress 2.6 + Subversion

> svn propedit --editor-cmd nano svn:externals wordpress-content/plugins

> svn update

Page 96: Managing a WordPress 2.6 installation with Subversion

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'

Page 97: Managing a WordPress 2.6 installation with Subversion

Early adopter pitfalls

WordPress 2.6 + Subversion

Page 98: Managing a WordPress 2.6 installation with 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

Page 99: Managing a WordPress 2.6 installation with Subversion

Early adopter pitfalls

- Themes

- Use get_theme_root()

- Use get_theme_root_uri()

WordPress 2.6 + Subversion

Page 100: Managing a WordPress 2.6 installation with Subversion

Early adopter pitfalls

- Directory and file permissions

- Stop WordPress from editing .htaccess

- Remember to open up uploads

WordPress 2.6 + Subversion

Page 101: Managing a WordPress 2.6 installation with Subversion

Happy subverting!

WordPress 2.6 + Subversion