Skip to content

Commit 1203708

Browse files
committed
Merge pull request #204 from nodegit/remotes
Add in remote listing support and test
2 parents 5480814 + 15315cf commit 1203708

File tree

8 files changed

+84
-15
lines changed

8 files changed

+84
-15
lines changed

generate/descriptor.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,26 @@
535535
},
536536

537537
"remote": {
538+
"dependencies": [
539+
"../include/functions/copy.h",
540+
"../include/remote.h",
541+
"../include/strarray.h",
542+
"../include/repository.h",
543+
"../include/transport.h"
544+
],
545+
546+
"functions": {
547+
"git_remote_list": {
548+
"ignore": false,
549+
"isConstructorMethod": true,
550+
"args": [
551+
{ "shouldAlloc": true }
552+
],
553+
"return": {
554+
"copy": "git_strarray_copy"
555+
}
556+
}
557+
}
538558
},
539559

540560
"repository": {
@@ -648,6 +668,10 @@
648668
"cType": null
649669
},
650670

671+
"strarray": {
672+
"cType": "git_strarray"
673+
},
674+
651675
"submodule": {
652676
},
653677

generate/templates/binding.gyp.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
],
2424

2525
"cflags": [
26-
"-Wall",
26+
"-Wall"
2727
],
2828

2929
"conditions": [

generate/templates/convertToV8.cc.ejs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<% toName = to.name || 'result' -%>
22
<% if (to.cppClassName == "String") { -%>
3-
<% if (typeof to.size != 'undefined') { -%>
4-
to = NanNew<String>(<%- toName %>, <%- to.size %>);
5-
<% } else { -%>
6-
to = NanNew<String>(<%- toName %>);
7-
<% } -%>
8-
<% if (to.freeFunctionName) { -%>
9-
<%- to.freeFunctionName %>(<%- toName %>);
10-
<% } -%>
3+
<% if (typeof to.size != 'undefined') { -%>
4+
to = NanNew<String>(<%- toName %>, <%- to.size %>);
5+
<% } else if (to.cType === "char **") { -%>
6+
to = NanNew<String>(*<%- toName %>);
7+
<% } else { -%>
8+
to = NanNew<String>(<%- toName %>);
9+
<% } -%>
10+
11+
<% if (to.freeFunctionName) { -%>
12+
<%- to.freeFunctionName %>(<%- toName %>);
13+
<% } -%>
1114
<% } else if (isV8Value(to.cppClassName)) { -%>
1215
<% if (~['Uint32', 'Int32'].indexOf(to.cppClassName)) { -%>
1316
<% var className = to.cppClassName.toLowerCase()+'_t' -%>

generate/types.json

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1993,8 +1993,8 @@
19931993
"js": "list"
19941994
},
19951995
"git_strarray *": {
1996-
"js": "Strarray",
1997-
"cpp": "Strarray"
1996+
"cpp": "GitStrarray",
1997+
"js": "Strarray"
19981998
},
19991999
"git_tag_list_match": {
20002000
"cpp": "ListMatch",
@@ -2062,7 +2062,7 @@
20622062
},
20632063
"git_strarray*": {
20642064
"js": "Strarray*",
2065-
"cpp": "Strarray*"
2065+
"cpp": "GitStrarray*"
20662066
},
20672067
"git_revparse_single": {
20682068
"cpp": "RevparseSingle",
@@ -2213,8 +2213,8 @@
22132213
"js": "strarrayCopy"
22142214
},
22152215
"const git_strarray *": {
2216-
"js": "Strarray",
2217-
"cpp": "Strarray"
2216+
"cpp": "GitStrarray",
2217+
"js": "Strarray"
22182218
},
22192219
"git_submodule_foreach": {
22202220
"cpp": "Foreach",
@@ -9043,5 +9043,17 @@
90439043
"const git_diff_line *": {
90449044
"cpp": "GitDiffLine",
90459045
"js": "DiffLine"
9046+
},
9047+
"git_strarray": {
9048+
"cpp": "GitStrarray",
9049+
"js": "Strarray"
9050+
},
9051+
"git_strarray **": {
9052+
"cpp": "GitStrarray",
9053+
"js": "Strarray"
9054+
},
9055+
"const git_strarray **": {
9056+
"cpp": "GitStrarray",
9057+
"js": "Strarray"
90469058
}
90479059
}

lib/remote.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var NodeGit = require("../");
2+
3+
var Remote = NodeGit.Remote;
4+
5+
module.exports = Remote;

lib/repository.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var Tree = require("./tree");
55
var Reference = require("./refs");
66
var Revwalk = require("./revwalk");
77
var Commit = require("./commit");
8+
var Remote = require("./remote");
89

910
var TreeBuilder = NodeGit.Treebuilder;
1011
var Repository = NodeGit.Repository;
@@ -35,6 +36,22 @@ Repository.prototype.getBranch = function(name, callback) {
3536
}, callback);
3637
};
3738

39+
/**
40+
* Lists out the remotes in the given repository.
41+
*
42+
* @param {Function} Optional callback
43+
* @return {Object} Promise object.
44+
*/
45+
Repository.prototype.getRemotes = function(callback) {
46+
return Remote.list(this).then(function(remotes) {
47+
if (typeof callback === "function") {
48+
callback(null, remotes);
49+
}
50+
51+
return remotes;
52+
}, callback);
53+
};
54+
3855
/**
3956
* Lookup the reference with the given name.
4057
*

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
"test": "npm run lint && npm run mocha",
7373
"publish": "node-pre-gyp package && node-pre-gyp publish",
7474
"generate": "node generate/setup && node generate",
75-
"install": "npm run generate && node install"
75+
"install": "npm run generate && node install",
76+
"rebuild": "npm run generate && node-gyp configure build"
7677
}
7778
}

test/tests/repository.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,11 @@ describe("Repository", function() {
4545
assert.ok(index instanceof Index);
4646
});
4747
});
48+
49+
it("can list remotes", function() {
50+
return this.repository.getRemotes().then(function(remotes) {
51+
assert.equal(remotes.count(), 1);
52+
assert.equal(remotes.strings(), "origin");
53+
});
54+
});
4855
});

0 commit comments

Comments
 (0)