From b15c617d0f1c098c06b3579d00e8d505047a153d Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Thu, 10 Oct 2013 23:01:30 +0200 Subject: [PATCH] Describe HEAD if no explicit target was set Change-Id: I5a5a238709df813ec07278bb3b4f9ea5c85c0883 Signed-off-by: Matthias Sohn --- .../eclipse/jgit/api/DescribeCommandTest.java | 18 ++++++++++++------ .../eclipse/jgit/internal/JGitText.properties | 1 - .../org/eclipse/jgit/api/DescribeCommand.java | 17 ++++++++++------- .../org/eclipse/jgit/internal/JGitText.java | 1 - 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DescribeCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DescribeCommandTest.java index 88f610892..eb598e80f 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DescribeCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DescribeCommandTest.java @@ -42,16 +42,19 @@ */ package org.eclipse.jgit.api; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.junit.RepositoryTestCase; -import org.eclipse.jgit.lib.ObjectId; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import static org.junit.Assert.*; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.api.errors.RefNotFoundException; +import org.eclipse.jgit.junit.RepositoryTestCase; +import org.eclipse.jgit.lib.ObjectId; +import org.junit.Test; public class DescribeCommandTest extends RepositoryTestCase { @@ -63,7 +66,7 @@ public void setUp() throws Exception { git = new Git(db); } - @Test(expected = IllegalArgumentException.class) + @Test(expected = RefNotFoundException.class) public void noTargetSet() throws Exception { git.describe().call(); } @@ -87,6 +90,9 @@ public void testDescribe() throws Exception { assertNameStartsWith(c4, "3e563c5"); // the value verified with git-describe(1) assertEquals("t2-1-g3e563c5", describe(c4)); + + // test default target + assertEquals("t2-1-g3e563c5", git.describe().call()); } /** diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties index e0daa4d12..706dce7ce 100644 --- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties +++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties @@ -478,7 +478,6 @@ systemConfigFileInvalid=Systen wide config file {0} is invalid {1} tagAlreadyExists=tag ''{0}'' already exists tagNameInvalid=tag name {0} is invalid tagOnRepoWithoutHEADCurrentlyNotSupported=Tag on repository without HEAD currently not supported -targetIsNotSet=Target is not set theFactoryMustNotBeNull=The factory must not be null timerAlreadyTerminated=Timer already terminated topologicalSortRequired=Topological sort required. diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/DescribeCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/DescribeCommand.java index 863104b66..c2bf74410 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/DescribeCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/DescribeCommand.java @@ -48,6 +48,7 @@ import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.internal.JGitText; +import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; @@ -135,14 +136,16 @@ public DescribeCommand setTarget(String rev) throws IOException, } /** - * Describes the specified commit. + * Describes the specified commit. Target defaults to HEAD if no commit was + * set explicitly. * - * @return if there's a tag that points to the commit being described, this tag name - * is returned. Otherwise additional suffix is added to the nearest tag, just - * like git-describe(1). + * @return if there's a tag that points to the commit being described, this + * tag name is returned. Otherwise additional suffix is added to the + * nearest tag, just like git-describe(1). *

- * If none of the ancestors of the commit being described has any tags at all, - * then this method returns null, indicating that there's no way to describe this tag. + * If none of the ancestors of the commit being described has any + * tags at all, then this method returns null, indicating that + * there's no way to describe this tag. */ @Override public String call() throws GitAPIException { @@ -150,7 +153,7 @@ public String call() throws GitAPIException { checkCallable(); if (target == null) - throw new IllegalArgumentException(JGitText.get().targetIsNotSet); + setTarget(Constants.HEAD); Map tags = new HashMap(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java index 7b8809020..8ac971ab6 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java @@ -540,7 +540,6 @@ public static JGitText get() { /***/ public String tagAlreadyExists; /***/ public String tagNameInvalid; /***/ public String tagOnRepoWithoutHEADCurrentlyNotSupported; - /***/ public String targetIsNotSet; /***/ public String theFactoryMustNotBeNull; /***/ public String timerAlreadyTerminated; /***/ public String topologicalSortRequired;