[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/nodegit/nodegit/v0.0.4/lib/commit.js [Back]  [Original]

var git = require( '../' )
  , events = require( 'events' );

var _Commit = function( obj ) {
  var self = { _cache: {} };

  //if( obj instanceof git.raw.Repo ) {
  //  self.commit = new git.raw.Commit( obj );
  //}
  //else if( obj instanceof git.raw.Commit ) {
  //  self.commit = obj;
  //}

  if( obj instanceof git.raw.Commit ) {
    self.commit = obj;
  }
  else {
    self.commit = new git.raw.Commit();
  }
 
  Object.defineProperty( self, 'id', {
    get: function() {
      var oid = new git.raw.Oid();
      self.commit.id( oid );

      return oid;
    },
    enumerable: true
  });

  Object.defineProperty( self, 'sha', {
    get: function() {
      var oid = new git.raw.Oid();
      self.commit.id( oid );

      return oid.toString( 40 );
    },
    enumerable: true
  });

  Object.defineProperty( self, 'msg', {
    get: function() {
      return self.commit.messageShort();
    },
    enumerable: true
  });

  Object.defineProperty( self, 'message', {
    get: function() {
      return self.commit.message();
    },
    enumerable: true
  });

  Object.defineProperty( self, 'time', {
    get: function() {
      return new Date( self.commit.time() * 1000 );
    },
    enumerable: true
  });

  Object.defineProperty( self, 'offset', {
    get: function() {
      return self.commit.timeOffset();
    },
    enumerable: true
  });

  Object.defineProperty( self, 'author', {
    get: function() {
      var sig = new git.raw.Sig();
      
      self.commit.author( sig );

      return git.sig( sig );
    },
    enumerable: true
  });

  self.lookup = function( repo, oid, callback ) {
    self.repo = repo;
    self.commit.lookup( repo, oid, function() {
      var args = Array.prototype.slice.call( arguments );

      args[0] = git.util().error( args[0] );

      callback.apply( self, args.concat( self ) );
    });
  };

  self.tree = function() {
    var tree = new git.raw.Tree( self.repo );
    if( tree.error ) {
      return git.error( tree.error );
    }
    else {
      self.commit.tree( tree );
    }

    return git.tree( self.repo, tree );
  };

  self.file = function( path ) {
    return self.tree().entry( path );
  };

  self.history = function( start, end ) {
    var revwalk = git.revwalk( self.repo ),
        event = new events.EventEmitter(),
        commits = [];

    revwalk.walk( self.id, function( err, index, commit ) {
      if( err ) {
        event.emit( 'end', commits );
      }
      else {
        event.emit( 'commit', index, commit );
        commits.push( commit );
      }
    });

    return event;
  };


  return self;
};

exports.commit = _Commit;

Web Proxy Viewer  |  New URL  |  Original Page