diff --git a/lib/repository.js b/lib/repository.js index d876b1241..7e489123e 100644 --- a/lib/repository.js +++ b/lib/repository.js @@ -1067,10 +1067,8 @@ Repository.prototype.getReference = function(name, callback) { * @return {Commit} */ Repository.prototype.getReferenceCommit = function(name, callback) { - var repository = this; - return this.getReference(name).then(function(reference) { - return repository.getCommit(reference.target()).then(function(commit) { + return reference.peel(NodeGit.Object.TYPE.COMMIT).then(function(commit) { if (typeof callback === "function") { callback(null, commit); } diff --git a/test/tests/repository.js b/test/tests/repository.js index be165b303..e8362c679 100644 --- a/test/tests/repository.js +++ b/test/tests/repository.js @@ -327,4 +327,40 @@ describe("Repository", function() { assert.equal(numMergeHeads, 1); }); }); + + it("can get reference commit that points at lightweight tag", function() { + var repository = this.repository; + var oid = null; + return repository.getHeadCommit() + .then(function(commit) { + oid = commit.id().toString(); + return repository.createLightweightTag( + oid, "getReferenceCommitLightweight"); + }) + .then(function() { + return repository.getReferenceCommit( + "refs/tags/getReferenceCommitLightweight"); + }) + .then(function(commit) { + assert.equal(commit.id().toString(), oid); + }); + }); + + it("can get reference commit that points at annotated tag", function() { + var repository = this.repository; + var oid = null; + return repository.getHeadCommit() + .then(function(commit) { + oid = commit.id().toString(); + return repository.createTag( + oid, "getReferenceCommitAnnotated", ""); + }) + .then(function() { + return repository.getReferenceCommit( + "refs/tags/getReferenceCommitAnnotated"); + }) + .then(function(commit) { + assert.equal(commit.id().toString(), oid); + }); + }); });