Index: node_modules/nodemon/lib/version.js
===================================================================
--- node_modules/nodemon/lib/version.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
+++ node_modules/nodemon/lib/version.js	(revision 81bc7da776d8cda42939ef4ab350c88d13b4941f)
@@ -0,0 +1,100 @@
+module.exports = version;
+module.exports.pin = pin;
+
+var fs = require('fs');
+var path = require('path');
+var exec = require('child_process').exec;
+var root = null;
+
+function pin() {
+  return version().then(function (v) {
+    version.pinned = v;
+  });
+}
+
+function version(callback) {
+  // first find the package.json as this will be our root
+  var promise = findPackage(path.dirname(module.parent.filename))
+    .then(function (dir) {
+      // now try to load the package
+      var v = require(path.resolve(dir, 'package.json')).version;
+
+      if (v && v !== '0.0.0-development') {
+        return v;
+      }
+
+      root = dir;
+
+      // else we're in development, give the commit out
+      // get the last commit and whether the working dir is dirty
+      var promises = [
+        branch().catch(function () { return 'master'; }),
+        commit().catch(function () { return '<none>'; }),
+        dirty().catch(function () { return 0; }),
+      ];
+
+      // use the cached result as the export
+      return Promise.all(promises).then(function (res) {
+        var branch = res[0];
+        var commit = res[1];
+        var dirtyCount = parseInt(res[2], 10);
+        var curr = branch + ': ' + commit;
+        if (dirtyCount !== 0) {
+          curr += ' (' + dirtyCount + ' dirty files)';
+        }
+
+        return curr;
+      });
+    }).catch(function (error) {
+      console.log(error.stack);
+      throw error;
+    });
+
+  if (callback) {
+    promise.then(function (res) {
+      callback(null, res);
+    }, callback);
+  }
+
+  return promise;
+}
+
+function findPackage(dir) {
+  if (dir === '/') {
+    return Promise.reject(new Error('package not found'));
+  }
+  return new Promise(function (resolve) {
+    fs.stat(path.resolve(dir, 'package.json'), function (error, exists) {
+      if (error || !exists) {
+        return resolve(findPackage(path.resolve(dir, '..')));
+      }
+
+      resolve(dir);
+    });
+  });
+}
+
+function command(cmd) {
+  return new Promise(function (resolve, reject) {
+    exec(cmd, { cwd: root }, function (err, stdout, stderr) {
+      var error = stderr.trim();
+      if (error) {
+        return reject(new Error(error));
+      }
+      resolve(stdout.split('\n').join(''));
+    });
+  });
+}
+
+function commit() {
+  return command('git rev-parse HEAD');
+}
+
+function branch() {
+  return command('git rev-parse --abbrev-ref HEAD');
+}
+
+function dirty() {
+  return command('expr $(git status --porcelain 2>/dev/null| ' +
+    'egrep "^(M| M)" | wc -l)');
+}
