All of lore.kernel.org
 help / color / mirror / Atom feed
* [JGIT PATCH 1/2] Issue 23: Resolve tag^0 as tag^{commit}
@ 2008-09-11 21:39 Jonas Fonseca
  2008-09-11 22:47 ` Robin Rosenberg
  0 siblings, 1 reply; 10+ messages in thread
From: Jonas Fonseca @ 2008-09-11 21:39 UTC (permalink / raw)
  To: Robin Rosenberg, Shawn O. Pearce; +Cc: git

Repository.resolve("tag^0") failed with "not a commit". Fix it and add a
test case for it.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
---
 .../org/spearce/jgit/lib/T0008_testparserev.java   |    9 ++++++++-
 .../src/org/spearce/jgit/lib/Repository.java       |    5 +++++
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0008_testparserev.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0008_testparserev.java
index 8883b8b..3457574 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0008_testparserev.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/T0008_testparserev.java
@@ -109,10 +109,17 @@ public void testDerefTag() throws IOException {
 		assertEquals("fd608fbe625a2b456d9f15c2b1dc41f252057dd7",db.resolve("spearce-gpg-pub^{blob}").name());
 	}
 
+	public void testDerefTagIssue23() throws IOException {
+		assertEquals("17768080a2318cd89bba4c8b87834401e2095703",db.resolve("refs/tags/B").name());
+		assertEquals("d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864",db.resolve("refs/tags/B^{commit}").name());
+		// The special tag^0 == tag^{commit} rule
+		assertEquals("d86a2aada2f5e7ccf6f11880bfb9ab404e8a8864",db.resolve("refs/tags/B^0").name());
+	}
+
 	public void testDerefBlob() throws IOException {
 		assertEquals("fd608fbe625a2b456d9f15c2b1dc41f252057dd7",db.resolve("fd608fbe625a2b456d9f15c2b1dc41f252057dd7^{}").name());
 		assertEquals("fd608fbe625a2b456d9f15c2b1dc41f252057dd7",db.resolve("fd608fbe625a2b456d9f15c2b1dc41f252057dd7^{blob}").name());
 	}
-	
+
 	// TODO: ^{tree} for a tag pointing to a tag
 }
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java
index b27c23d..260a39d 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Repository.java
@@ -562,6 +562,11 @@ public ObjectId resolve(final String revstr) throws IOException {
 					case '9':
 						int j;
 						ref = mapObject(refId, null);
+						if (ref instanceof Tag && rev[i + 1] == '0') {
+							Tag tag = (Tag)ref;
+							refId = tag.getObjId();
+							ref = mapObject(refId, null);
+						}
 						if (!(ref instanceof Commit))
 							throw new IncorrectObjectTypeException(refId, Constants.TYPE_COMMIT);
 						for (j=i+1; j<rev.length; ++j) {
-- 
1.6.0.336.ga07ba


-- 
Jonas Fonseca

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2008-09-12 14:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-11 21:39 [JGIT PATCH 1/2] Issue 23: Resolve tag^0 as tag^{commit} Jonas Fonseca
2008-09-11 22:47 ` Robin Rosenberg
2008-09-12  0:00   ` Jonas Fonseca
2008-09-12  1:51     ` Imran M Yousuf
2008-09-12  8:40       ` [JGIT PATCH] Configure the maven surefire plugin to specifically include all tests Jonas Fonseca
2008-09-12 14:47         ` Shawn O. Pearce
2008-09-12  6:47     ` [JGIT PATCH 1/2] Issue 23: Resolve tag^0 as tag^{commit} Robin Rosenberg
2008-09-12 10:57       ` [JGIT PATCH 1/3] Fix IncorrectObjectTypeException thrown for incorrect ^{blob} Jonas Fonseca
2008-09-12 10:57       ` [JGIT PATCH 2/3] Fix off by one distance during resolving of commit~N Jonas Fonseca
2008-09-12 10:57       ` [JGIT PATCH 3/3] Tests and fixes for dereferencing tags in Repository.resolve() Jonas Fonseca

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.