From 3c2c8b47ff41ced17bc48fbc8cf34de3e1a3bcb2 Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Thu, 10 Oct 2013 18:32:03 +0200 Subject: [PATCH 1/2] Allow to set target of DescribeCommand Change-Id: I04805ce20cc203f5e491406c39b71e7017553b37 Signed-off-by: Matthias Sohn --- .../src/org/eclipse/jgit/api/DescribeCommand.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 ec85c5abe..863104b66 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/DescribeCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/DescribeCommand.java @@ -107,7 +107,7 @@ public class DescribeCommand extends GitCommand { * @throws IOException * a pack file or loose object could not be read. */ - DescribeCommand setTarget(ObjectId target) throws IOException { + public DescribeCommand setTarget(ObjectId target) throws IOException { this.target = w.parseCommit(target); return this; } @@ -126,7 +126,8 @@ public class DescribeCommand extends GitCommand { * @throws IOException * a pack file or loose object could not be read. */ - DescribeCommand setTarget(String rev) throws IOException, RefNotFoundException { + public DescribeCommand setTarget(String rev) throws IOException, + RefNotFoundException { ObjectId id = repo.resolve(rev); if (id == null) throw new RefNotFoundException(MessageFormat.format(JGitText.get().refNotResolved, rev)); From b15c617d0f1c098c06b3579d00e8d505047a153d Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Thu, 10 Oct 2013 23:01:30 +0200 Subject: [PATCH 2/2] 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 class DescribeCommandTest extends RepositoryTestCase { 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 class DescribeCommandTest extends RepositoryTestCase { 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.api.errors.RefNotFoundException; 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 class DescribeCommand extends GitCommand { } /** - * 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 class DescribeCommand extends GitCommand { 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 class JGitText extends TranslationBundle { /***/ public String tagAlreadyExists; /***/ public String tagNameInvalid; /***/ public String tagOnRepoWithoutHEADCurrentlyNotSupported; - /***/ public String targetIsNotSet; /***/ public String theFactoryMustNotBeNull; /***/ public String timerAlreadyTerminated; /***/ public String topologicalSortRequired;