Merge changes I5a5a2387,I04805ce2
* changes: Describe HEAD if no explicit target was set Allow to set target of DescribeCommand
This commit is contained in:
commit
c01a66deba
|
@ -42,16 +42,19 @@
|
||||||
*/
|
*/
|
||||||
package org.eclipse.jgit.api;
|
package org.eclipse.jgit.api;
|
||||||
|
|
||||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
import static org.junit.Assert.assertEquals;
|
||||||
import org.eclipse.jgit.junit.RepositoryTestCase;
|
import static org.junit.Assert.assertNull;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import static org.junit.Assert.assertTrue;
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
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 {
|
public class DescribeCommandTest extends RepositoryTestCase {
|
||||||
|
|
||||||
|
@ -63,7 +66,7 @@ public void setUp() throws Exception {
|
||||||
git = new Git(db);
|
git = new Git(db);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test(expected = RefNotFoundException.class)
|
||||||
public void noTargetSet() throws Exception {
|
public void noTargetSet() throws Exception {
|
||||||
git.describe().call();
|
git.describe().call();
|
||||||
}
|
}
|
||||||
|
@ -87,6 +90,9 @@ public void testDescribe() throws Exception {
|
||||||
assertNameStartsWith(c4, "3e563c5");
|
assertNameStartsWith(c4, "3e563c5");
|
||||||
// the value verified with git-describe(1)
|
// the value verified with git-describe(1)
|
||||||
assertEquals("t2-1-g3e563c5", describe(c4));
|
assertEquals("t2-1-g3e563c5", describe(c4));
|
||||||
|
|
||||||
|
// test default target
|
||||||
|
assertEquals("t2-1-g3e563c5", git.describe().call());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -478,7 +478,6 @@ systemConfigFileInvalid=Systen wide config file {0} is invalid {1}
|
||||||
tagAlreadyExists=tag ''{0}'' already exists
|
tagAlreadyExists=tag ''{0}'' already exists
|
||||||
tagNameInvalid=tag name {0} is invalid
|
tagNameInvalid=tag name {0} is invalid
|
||||||
tagOnRepoWithoutHEADCurrentlyNotSupported=Tag on repository without HEAD currently not supported
|
tagOnRepoWithoutHEADCurrentlyNotSupported=Tag on repository without HEAD currently not supported
|
||||||
targetIsNotSet=Target is not set
|
|
||||||
theFactoryMustNotBeNull=The factory must not be null
|
theFactoryMustNotBeNull=The factory must not be null
|
||||||
timerAlreadyTerminated=Timer already terminated
|
timerAlreadyTerminated=Timer already terminated
|
||||||
topologicalSortRequired=Topological sort required.
|
topologicalSortRequired=Topological sort required.
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
|
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
|
||||||
import org.eclipse.jgit.errors.MissingObjectException;
|
import org.eclipse.jgit.errors.MissingObjectException;
|
||||||
import org.eclipse.jgit.internal.JGitText;
|
import org.eclipse.jgit.internal.JGitText;
|
||||||
|
import org.eclipse.jgit.lib.Constants;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
import org.eclipse.jgit.lib.Ref;
|
import org.eclipse.jgit.lib.Ref;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
|
@ -107,7 +108,7 @@ protected DescribeCommand(Repository repo) {
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* a pack file or loose object could not be read.
|
* 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);
|
this.target = w.parseCommit(target);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -126,7 +127,8 @@ DescribeCommand setTarget(ObjectId target) throws IOException {
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* a pack file or loose object could not be read.
|
* 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);
|
ObjectId id = repo.resolve(rev);
|
||||||
if (id == null)
|
if (id == null)
|
||||||
throw new RefNotFoundException(MessageFormat.format(JGitText.get().refNotResolved, rev));
|
throw new RefNotFoundException(MessageFormat.format(JGitText.get().refNotResolved, rev));
|
||||||
|
@ -134,14 +136,16 @@ DescribeCommand setTarget(String rev) throws IOException, RefNotFoundException {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
|
* @return if there's a tag that points to the commit being described, this
|
||||||
* is returned. Otherwise additional suffix is added to the nearest tag, just
|
* tag name is returned. Otherwise additional suffix is added to the
|
||||||
* like git-describe(1).
|
* nearest tag, just like git-describe(1).
|
||||||
* <p/>
|
* <p/>
|
||||||
* If none of the ancestors of the commit being described has any tags at all,
|
* If none of the ancestors of the commit being described has any
|
||||||
* then this method returns null, indicating that there's no way to describe this tag.
|
* tags at all, then this method returns null, indicating that
|
||||||
|
* there's no way to describe this tag.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String call() throws GitAPIException {
|
public String call() throws GitAPIException {
|
||||||
|
@ -149,7 +153,7 @@ public String call() throws GitAPIException {
|
||||||
checkCallable();
|
checkCallable();
|
||||||
|
|
||||||
if (target == null)
|
if (target == null)
|
||||||
throw new IllegalArgumentException(JGitText.get().targetIsNotSet);
|
setTarget(Constants.HEAD);
|
||||||
|
|
||||||
Map<ObjectId, Ref> tags = new HashMap<ObjectId, Ref>();
|
Map<ObjectId, Ref> tags = new HashMap<ObjectId, Ref>();
|
||||||
|
|
||||||
|
|
|
@ -540,7 +540,6 @@ public static JGitText get() {
|
||||||
/***/ public String tagAlreadyExists;
|
/***/ public String tagAlreadyExists;
|
||||||
/***/ public String tagNameInvalid;
|
/***/ public String tagNameInvalid;
|
||||||
/***/ public String tagOnRepoWithoutHEADCurrentlyNotSupported;
|
/***/ public String tagOnRepoWithoutHEADCurrentlyNotSupported;
|
||||||
/***/ public String targetIsNotSet;
|
|
||||||
/***/ public String theFactoryMustNotBeNull;
|
/***/ public String theFactoryMustNotBeNull;
|
||||||
/***/ public String timerAlreadyTerminated;
|
/***/ public String timerAlreadyTerminated;
|
||||||
/***/ public String topologicalSortRequired;
|
/***/ public String topologicalSortRequired;
|
||||||
|
|
Loading…
Reference in New Issue