Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
83 lines (59 sloc) 1.92 KB

pullover

Pull git repos. A counterpart to pushover.

install:

$ npm install pullover

example:

var hook = require('hubhook')(), // listen to github post-commit hooks.
    pullover = require('../')('/tmp/repos');

var http = require('http');

// server for listening for git post-commit hook action
http.createServer(function (req, res) {
  if (req.method === 'POST' && req.url === '/api/webhooks/git') {
    return hook.handle(req, res);
  }
  res.statusCode = 404;
  res.setHeader('content-type', 'application/json');
  res.end(JSON.stringify({
    error: 404,
    message: 'not_found',
    hints: 'POST to /api/webhooks/git'
  }, true, 2));
}).listen(7005);

// payload
hook.on('payload', function (payload) {

  // pullover can parse github-style payloads automagically.
  pullover.pull(payload, function (err) {
    console.log(err || 'success!');
  });
});

API

var pullover = require('pullover')

var p = pullover(repoDir, opts={autoCreate:true})

var p = pullover(pushover)

Create a new pullover object from the directory repoDir. repoDir should be entirely empty except for git repo directories.

By default, repository targets will be created if they don't exist. You can disable that behavior with opts.autoCreate.

Unlike in pushover, all repos are checked-out instead of being bare, at least until someone figures out the "pull" alternative for bare repos for me.

pullover can also accept a pushover, in which case it uses the same configuration (minus checkout).

p.pull(options, )

options can either be

  • a github-style "payload" object OR
  • an object having the keys
    • repo: The name of the repo
    • remote: The path of the remote
    • branch: The branch to checkout. Defaults to master.

Optionally get a callback cb(err) to be notified when the repository is done being pulled.

tests:

$ npm test

license:

MIT/X11.