@@ -8,17 +8,16 @@ var git = require('../'),
88 * @param {git.raw.Repo } rawRepo
99 * @param {git.raw.Reference } [rawReference = new git.raw.Reference()]
1010 */
11- var Reference = function ( rawRepo , rawReference ) {
12- if ( ! ( rawRepo instanceof git . raw . Repo ) ) {
13- throw new git . error ( 'First parameter for Reference must be a raw repo ' ) ;
11+ var Reference = function ( rawReference ) {
12+ if ( ! ( rawReference instanceof git . raw . Reference ) ) {
13+ throw new git . error ( 'First parameter for Reference must be a raw reference ' ) ;
1414 }
15- this . rawRepo = rawRepo ;
15+ this . rawReference = rawReference ;
16+ } ;
1617
17- if ( rawReference instanceof git . raw . Reference ) {
18- this . rawReference = rawReference ;
19- } else {
20- this . rawReference = new git . raw . Reference ( this . rawRepo ) ;
21- }
18+ Reference . Type = {
19+ Oid : 0 ,
20+ Symbolic : 1
2221} ;
2322
2423/**
@@ -27,38 +26,31 @@ var Reference = function(rawRepo, rawReference) {
2726 * @param {String } name
2827 * @param {Reference~lookupCallback } callback
2928 */
30- Reference . prototype . lookup = function ( name , callback ) {
29+ Reference . lookup = function ( rawRepo , name , callback ) {
3130 /**
3231 * @callback Reference~lookupCallback Callback executed on lookup completion.
3332 * @param {GitError|null } error An Error or null if successful.
3433 * @param {Reference|null } reference Retrieved reference object or null.
3534 */
3635 var self = this ;
37- self . rawReference . lookup ( self . rawRepo , name , function referenceLookup ( error , rawReference ) {
38- if ( ! success ( error , callback ) ) {
39- return ;
36+ git . raw . Reference . lookup ( rawRepo , name , function referenceLookup ( error , rawReference ) {
37+ if ( rawReference . type ( ) == Reference . Type . Symbolic ) {
38+ rawReference . resolve ( function referenceResolve ( error , rawReference ) {
39+ if ( ! success ( error , callback ) ) return ;
40+ callback ( null , new Reference ( rawReference ) ) ;
41+ } ) ;
42+ } else {
43+ if ( ! success ( error , callback ) ) return ;
44+ callback ( null , new Reference ( rawReference ) ) ;
4045 }
41- self . rawReference = rawReference ;
42- callback ( null , self ) ;
4346 } ) ;
4447} ;
4548
4649/**
4750 * Get the Oid representing this reference.
48- *
49- * @param {Reference~oidCallback } callback
5051 */
51- Reference . prototype . oid = function ( callback ) {
52- /**
53- * @callback Reference~oidCallback Callback executed on oid retrieval.
54- * @param {GitError|null } error An Error or null if successful.
55- * @param {Oid|null } oid Retrieved Oid object or null.
56- */
57- this . rawReference . oid ( function referenceOid ( error , rawOid ) {
58- if ( success ( error , callback ) ) {
59- callback ( null , new git . oid ( rawOid ) ) ;
60- }
61- } ) ;
52+ Reference . prototype . oid = function ( ) {
53+ return this . rawReference . oid ( ) ;
6254} ;
6355
6456exports . reference = Reference ;
0 commit comments