Skip to content

Commit ed1b9c8

Browse files
author
John Haley
committed
Fixed index count, revwalks and references
1 parent 57658ec commit ed1b9c8

3 files changed

Lines changed: 66 additions & 0 deletions

File tree

generate/descriptor.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,12 +507,18 @@
507507
"git_index_conflict_next": {
508508
"ignore": true
509509
},
510+
"git_index_entrycount": {
511+
"jsFunctionName": "size"
512+
},
510513
"git_index_find": {
511514
"ignore": true
512515
},
513516
"git_index_free": {
514517
"ignore": true
515518
},
519+
"git_index_get_byindex": {
520+
"jsFunctionName": "entry"
521+
},
516522
"git_index_new": {
517523
"ignore": true
518524
},
@@ -900,6 +906,19 @@
900906
"git_reference_iterator_new": {
901907
"ignore": true
902908
},
909+
"git_reference_list": {
910+
"args": {
911+
"array": {
912+
"isReturn": true,
913+
"shouldAlloc": true,
914+
"cppClassName": "Array",
915+
"jsClassName": "Array",
916+
"size": "count",
917+
"key": "strings"
918+
}
919+
},
920+
"isAsync": true
921+
},
903922
"git_reference_next": {
904923
"ignore": true
905924
},

lib/nodegit.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ require("./oid");
5252
require("./patch");
5353
require("./refs");
5454
require("./remote");
55+
require("./revwalk");
5556
require("./repository");
5657
require("./revwalk");
5758
require("./signature");

lib/repository.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,52 @@ Repository.prototype.getReference = function(name, callback) {
8585
}, callback);
8686
};
8787

88+
Repository.getReferences = function(repo, type, refNamesOnly, callback) {
89+
return Reference.list(repo).then(function(refList) {
90+
var refFilterPromises = [];
91+
var filteredRefs = [];
92+
93+
refList.forEach(function(refName) {
94+
refFilterPromises.push(Reference.lookup(repo, refName)
95+
.then(function(ref) {
96+
if (type == Reference.Type.All || ref.type() == type) {
97+
if (refNamesOnly) {
98+
filteredRefs.push(refName);
99+
return;
100+
}
101+
102+
if (ref.type() == Reference.Type.Symbolic) {
103+
return ref.resolve().then(function(resolvedRef) {
104+
resolvedRef.repo = repo;
105+
106+
filteredRefs.push(resolvedRef);
107+
});
108+
}
109+
else {
110+
filteredRefs.push(ref);
111+
}
112+
}
113+
})
114+
);
115+
});
116+
117+
return Promise.all(refFilterPromises).then(function() {
118+
if (callback) {
119+
callback(null, filteredRefs);
120+
}
121+
return filteredRefs;
122+
}, callback);
123+
});
124+
};
125+
126+
Repository.prototype.getReferences = function(type, callback) {
127+
return Repository.getReferences(this, type, false, callback);
128+
};
129+
130+
Repository.prototype.getReferenceNames = function(type, callback) {
131+
return Repository.getReferences(this, type, true, callback);
132+
};
133+
88134
/**
89135
* Retrieve the commit identified by oid.
90136
*

0 commit comments

Comments
 (0)