From f3d0812adaef20a9162cd229fe315449df22e3fb Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 19 Mar 2015 12:51:54 -0400 Subject: [PATCH 1/3] Fix symbolic reference handling in getReferences --- examples/general.js | 23 +++++++++-------------- lib/repository.js | 34 ++++++++++++++++------------------ 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/examples/general.js b/examples/general.js index 84c309c5a..f239ebfa6 100644 --- a/examples/general.js +++ b/examples/general.js @@ -343,23 +343,18 @@ nodegit.Repository.open(path.resolve(__dirname, "../.git")) // references such as branches, tags and remote references (everything in // the .git/refs directory). - return repo.getReferenceNames(nodegit.Reference.TYPE.ALL); + return nodegit.Repository.getReferences(repo, + nodegit.Reference.TYPE.LISTALL, false, true); }) - .then(function(referenceNames) { - var promises = []; - - referenceNames.forEach(function(referenceName) { - promises.push(repo.getReference(referenceName).then(function(reference) { - if (reference.isConcrete()) { - console.log("Reference:", referenceName, reference.target()); - } else if (reference.isSymbolic()) { - console.log("Reference:", referenceName, reference.symbolicTarget()); - } - })); + .then(function(references) { + references.forEach(function(reference) { + if (reference.isConcrete()) { + console.log("Reference:", reference.name(), reference.target()); + } else if (reference.isSymbolic()) { + console.log("Reference:", reference.name(), reference.symbolicTarget()); + } }); - - return Promise.all(promises); }) .done(function() { diff --git a/lib/repository.js b/lib/repository.js index 37e9833ff..7af006ed0 100644 --- a/lib/repository.js +++ b/lib/repository.js @@ -145,7 +145,12 @@ Repository.prototype.getReference = function(name, callback) { }, callback); }; -Repository.getReferences = function(repo, type, refNamesOnly, callback) { +Repository.getReferences = +function(repo, type, refNamesOnly, includeSymbolic, callback) { + if (!callback && typeof includeSymbolic === "function") { + callback = includeSymbolic; + includeSymbolic = false; + } return Reference.list(repo).then(function(refList) { var refFilterPromises = []; var filteredRefs = []; @@ -153,21 +158,14 @@ Repository.getReferences = function(repo, type, refNamesOnly, callback) { refList.forEach(function(refName) { refFilterPromises.push(Reference.lookup(repo, refName) .then(function(ref) { - if (type == Reference.TYPE.ALL || ref.type() == type) { - if (refNamesOnly) { - filteredRefs.push(refName); - return; - } - - if (ref.isSymbolic()) { - return ref.resolve().then(function(resolvedRef) { - resolvedRef.repo = repo; - - filteredRefs.push(resolvedRef); - }); - } - else { - filteredRefs.push(ref); + if (type == Reference.TYPE.LISTALL || ref.type() == type) { + if (!ref.isSymbolic() || includeSymbolic) { + if (refNamesOnly) { + filteredRefs.push(refName); + } + else { + filteredRefs.push(ref); + } } } }) @@ -192,7 +190,7 @@ Repository.getReferences = function(repo, type, refNamesOnly, callback) { * @return {Array} */ Repository.prototype.getReferences = function(type, callback) { - return Repository.getReferences(this, type, false, callback); + return Repository.getReferences(this, type, false, false, callback); }; /** @@ -203,7 +201,7 @@ Repository.prototype.getReferences = function(type, callback) { * @return {Array} */ Repository.prototype.getReferenceNames = function(type, callback) { - return Repository.getReferences(this, type, true, callback); + return Repository.getReferences(this, type, true, false, callback); }; /** From 3dfcef8f627c7b8f5a175cf96ca3b2c4656dde58 Mon Sep 17 00:00:00 2001 From: John Haley Date: Thu, 19 Mar 2015 10:40:18 -0700 Subject: [PATCH 2/3] Add twitter username to README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42e47abd4..7fc156cc3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -NodeGit +NodeGit [@nodegit](https://twitter.com/nodegit) ------- > Node bindings to the [libgit2](http://libgit2.github.com/) project. From a09b41a1bd38b72bb09066121f5fd52602b3591b Mon Sep 17 00:00:00 2001 From: John Haley Date: Thu, 19 Mar 2015 11:16:50 -0700 Subject: [PATCH 3/3] Merge twitter link into header --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7fc156cc3..623d5e133 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -NodeGit [@nodegit](https://twitter.com/nodegit) +[NodeGit](https://twitter.com/nodegit) ------- > Node bindings to the [libgit2](http://libgit2.github.com/) project.