Version control live websites using Git

/*--- holy mAcar00ns!! --- */

Articles about using Git for deployment and versioning of live web sites:

Using Git to Maintain Your Website

Using Git to manage a web site

A web-focused Git workflow

And specifically for Django:

Development to Deployment in Django

A Tale of Three Repositories

The foundation of my development-deployment pipeline is three repositories (it's a bit simpler using distributed version control, but you could accomplish more or less the same with Subversion or CVS).

A master repository hosted in a non-local and non-production location. I use my Slicehost slice that hosts my blog for all my private git repositories (it has daily and weekly backups, and if it does lag or crash, I can fix it myself), but you could use a paid GitHub account or one of the other similar services.

A local repository for each developer, which they push out to the master server at regular intervals.

A production repository on each production machine serving the project.

Developers do most of their work on their local machines, and push it to an appropriate branch on the master repository. They also pull from the master server occasionally to keep the repositories synchronized.

The production repositories are kept up to date by either:

Using Fabric to command them to pull the newest changes. This is the best option for large, medium and small deployments. That is, this is always the best option. Don't bother reading the others.

SSHing into the production servers and manually pulling the change set. Alternatively you could write a batch script that does this. This approach is more than sufficient for one machine deployment, but for anything more complex than that you'll want to use a deployment solution.

Setup a cronjob that pulls the changes periodically. This is the simplest and laziest of the approaches, but is a bad idea in most circumstances.

That's a good article.

Labels: , ,

all your bases ar--

ping moi pleeez

About this entry

pacman is coming

nuck nuck

e belong to us!