Git deployment with Dandelion

Git is the bee’s knees when it comes to version control and definitely my DCVS of choice. It’s an indispensable tool for collaborating with other developers and has become such an integral part of my development workflow that I cannot imagine working nearly as effectively without it. When it comes time for deployment, there are […]

Subject Matter
Development

Author

Published
May 2, 2011

Share
Facebook Tweet

Git is the bee’s knees when it comes to version control and definitely my DCVS of choice. It’s an indispensable tool for collaborating with other developers and has become such an integral part of my development workflow that I cannot imagine working nearly as effectively without it.

When it comes time for deployment, there are a handful of fantastic options including Capistrano or even just Git itself, however, these require shell access to the server- something that is usually not available in shared hosting environments. One is left either transferring the entire codebase to the server on every deployment (very time consuming) or manually keeping track of which files have changed since the last time we deployed (error prone).

Dandelion takes the second approach but manages revisions for you so there’s no need to manually track changed files- Git does this anyway and Dandelion leverages that. Dandelion keeps track of the currently deployed revision so that it may later be used to generate a list of files that have been changed, added or deleted and transfer those files via FTP or SFTP.

Getting Started

Dandelion is written in Ruby and requires that both Ruby and RubyGems be installed (note that Ruby 1.9 now includes RubyGems by default). Rather than using your operating system’s packaging system, I highly recommend using RVM for installing and managing Ruby versions and gems.

Assuming Ruby is ready to go, install Dandelion…

$ gem install dandelion

In the root of the Git repository you wish to deploy, create a file called dandelion.yml in which to specify configuration options.

scheme: sftp
host: example.com
username: user
password: pass
path: path/to/deployment
exclude:
    - .gitignore
    - dandelion.yml

Then start deploying.

$ dandelion deploy

This will transfer all files in the HEAD revision of your repository to the location specified in dandelion.yml. Next time you deploy, Dandelion will know which files have changed saving you time and headache.

For more information or to contribute to Dandelion head over to http://github.com/scttnlsn/dandelion.