code: function build(mode, system, cdef, out, cb) {
      var cmd = cdef.specific.processBuild || cdef.specific.build;
      var branch = '';
  
      logger.info('building');
      out.stdout('building');
  
      if (!cmd) { return cb(null, {}); }
      if (!cdef.specific.repositoryUrl) { return cb(new Error('missing repositoryUrl'), {}); }
  
      //var parsed = parseGitUrl(cdef.specific.repositoryUrl).branch;
      var parsed = parseGitUrl(cdef.specific.repositoryUrl);
      if (parsed.branch) {
        branch = parsed.branch;
      }
  
      if (cdef.specific.commit) {
        var synchCommand =  [
          [
            ' ( ' +
            'test `git show-ref --hash refs/heads/' + branch +'` = ' + cdef.specific.commit,
            ' && ',
            'git checkout -q ' + branch,
            ' ) ',
            ' || ',
            'git checkout -q ' + cdef.specific.commit
          ].join(' '),
          'echo checked out ' + cdef.specific.commit,
        ].join(' && ');
  
        executor.exec(mode, synchCommand, pathFromRepoUrl(system, cdef), out, function(err) {
          if (err) { return cb(err); }
          executor.exec(mode, cmd, pathFromRepoUrl(system, cdef), out, cb);
        });
      }
      else {
        executor.exec(mode, cmd, pathFromRepoUrl(system, cdef), out, cb);
      }
    }
docs: build the container
  system - the system definition
  cdef - contianer definition block
  out - ouput stream
  cb - complete callback