Nathan Hoad

Deploy from a Git tag with Capistrano

Are you using Capistrano and Git and want to easily deploy from Git tags? It couldn't be simpler

Using Git, tag a new release:

git tag -a -m "Tagging a release"

You can use git tag to list your tags:

git tag

Now make sure you push your tags to the central repository:

git push origin --tags

Now in your Capsitrano deploy script:

set :branch do
  default_tag = `git tag`.split("\n").last

  tag = Capistrano::CLI.ui.ask "Tag to deploy (make sure to push the tag first): [#{default_tag}] "
  tag = default_tag if tag.empty?

This will, on deployment, ask you which tag you want to deploy from (defaulting to the most recent tag).

If I just made your day a little better then thank me with a coffee: