Skip to content


Subversion checkout URL

You can clone with
Download ZIP
application deployment library for node.js
Tree: eb49b95f7b

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

Gittyup is a node.js deplyment library with some slick features:

  • Rollback support.
  • Script testing before using.
  • Start/Stop/Restart checked out apps.
  • Make a slug out of your app and easily move it quickly between servers.

To Do:

  • Storage transports: rackspace, amazon aws, etc
  • .slugignore
  • Support for different types of apps: PHP, Java, etc.



root directory by default is /etc/gittyup/

var gittyup = require('gittyup')('/etc/bonsai/garden/'),
app ='myApp');

app.checkout('myProjectSource', function(err, result)

    //something went wrong in the checkout phase - most likely in linking, rollback
    if(err) return app.rollback();

    //test to make sure everythings good
    app.test(function(err, result)
        //something went wrong in the testing phase, rollback
        if(err) return app.rollback();

        //start upp the application
        app.process(function(err, process)



First argument can be either a string (app name), or object


  • name - The name of the application.
  • group - The group the application is in.
  • maxRecords - Maximum number of application records to keep locally.

.app().checkout(source, callback)

From a git repository:'myApp').checkout('', function(err, result)
    //do stuff!

From a generated slug:'myApp').checkout('', function(err, result)

From a local directory:'myApp').checkout('/some/local/path', function(err, result)



Returns a runnable process of the current checked out item.'myApp').process(function(err, process)

    process.start(function(err, result)

    process.stop(function(err, result)

    process.restart(function(err, result)


Tests the most recent checked out item. Make sure to include "scripts:test" in your package.json. Something like:

    "name": "myApp",

    "scripts": {
        "test": "./test"

When exiting the test program, an exit code of 0 tells gittyup the test was successful, whereas 1 tells gittyup the test failed.


Makes a slug out of the current checkout. Use this method if you need to move the application around between servers. Once a slug is made, calling "makeSlug" on the same checkout will have no effect.'myApp').makeSlug(function(err, item)
    console.log(item.slug); // /etc/gittyup/apps/myApp/16767565434/slug/753a644f4e7aaa7fc9132be92d000002.tar.gz


If you're moving the slug around, install gittyup on the other end and have something ready like this:'myApp').checkout('', function(err, result)
    // stuff with transported slug


Returns Information about the current checked out item.


Returns checkout history of the given application.


Uses a previously used checkout item without removing the current one.

.app().remove(checkoutId, callback)

Removes a checked out item.


Destroys the application, and all the checked out items.

Something went wrong with that request. Please try again.