@@ -0,0 +1,99 @@ | |||
/* | |||
* Copyright (C) 2013, Matthias Sohn <matthias.sohn@sap.com> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
* under the terms of the Eclipse Distribution License v1.0 which | |||
* accompanies this distribution, is reproduced below, and is | |||
* available at http://www.eclipse.org/org/documents/edl-v10.php | |||
* | |||
* All rights reserved. | |||
* | |||
* Redistribution and use in source and binary forms, with or | |||
* without modification, are permitted provided that the following | |||
* conditions are met: | |||
* | |||
* - Redistributions of source code must retain the above copyright | |||
* notice, this list of conditions and the following disclaimer. | |||
* | |||
* - Redistributions in binary form must reproduce the above | |||
* copyright notice, this list of conditions and the following | |||
* disclaimer in the documentation and/or other materials provided | |||
* with the distribution. | |||
* | |||
* - Neither the name of the Eclipse Foundation, Inc. nor the | |||
* names of its contributors may be used to endorse or promote | |||
* products derived from this software without specific prior | |||
* written permission. | |||
* | |||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND | |||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, | |||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
*/ | |||
package org.eclipse.jgit.pgm; | |||
import static org.junit.Assert.assertArrayEquals; | |||
import org.eclipse.jgit.api.Git; | |||
import org.eclipse.jgit.lib.CLIRepositoryTestCase; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
public class DescribeTest extends CLIRepositoryTestCase { | |||
private Git git; | |||
@Override | |||
@Before | |||
public void setUp() throws Exception { | |||
super.setUp(); | |||
git = new Git(db); | |||
} | |||
private void initialCommitAndTag() throws Exception { | |||
git.commit().setMessage("initial commit").call(); | |||
git.tag().setName("v1.0").call(); | |||
} | |||
@Test | |||
public void testNoHead() throws Exception { | |||
assertArrayEquals( | |||
new String[] { "fatal: No names found, cannot describe anything." }, | |||
execute("git describe")); | |||
} | |||
@Test | |||
public void testHeadNoTag() throws Exception { | |||
git.commit().setMessage("initial commit").call(); | |||
assertArrayEquals( | |||
new String[] { "fatal: No names found, cannot describe anything." }, | |||
execute("git describe")); | |||
} | |||
@Test | |||
public void testDescribeTag() throws Exception { | |||
initialCommitAndTag(); | |||
assertArrayEquals(new String[] { "v1.0", "" }, | |||
execute("git describe HEAD")); | |||
} | |||
@Test | |||
public void testDescribeCommit() throws Exception { | |||
initialCommitAndTag(); | |||
writeTrashFile("greeting", "Hello, world!"); | |||
git.add().addFilepattern("greeting").call(); | |||
git.commit().setMessage("2nd commit").call(); | |||
assertArrayEquals(new String[] { "v1.0-1-g56f6ceb", "" }, | |||
execute("git describe")); | |||
} | |||
} |
@@ -8,6 +8,7 @@ org.eclipse.jgit.pgm.Clone | |||
org.eclipse.jgit.pgm.Commit | |||
org.eclipse.jgit.pgm.Config | |||
org.eclipse.jgit.pgm.Daemon | |||
org.eclipse.jgit.pgm.Describe | |||
org.eclipse.jgit.pgm.Diff | |||
org.eclipse.jgit.pgm.DiffTree | |||
org.eclipse.jgit.pgm.Fetch |
@@ -117,6 +117,7 @@ metaVar_version=VERSION | |||
mostCommonlyUsedCommandsAre=The most commonly used commands are: | |||
needApprovalToDestroyCurrentRepository=Need approval to destroy current repository | |||
noGitRepositoryConfigured=No Git repository configured. | |||
noNamesFound=No names found, cannot describe anything. | |||
noSuchFile=no such file: {0} | |||
noSuchRemoteRef=no such remote ref: ''{0}'' | |||
noTREESectionInIndex=no 'TREE' section in index | |||
@@ -186,6 +187,7 @@ usage_CommitPaths=see --only | |||
usage_CreateABareRepository=Create a bare repository | |||
usage_CreateATag=Create a tag | |||
usage_CreateAnEmptyGitRepository=Create an empty git repository | |||
usage_Describe=Show the most recent tag that is reachable from a commit | |||
usage_DiffAlgorithms=Test performance of jgit's diff algorithms | |||
usage_DisplayTheVersionOfJgit=Display the version of jgit | |||
usage_Gc=Cleanup unnecessary files and optimize the local repository |
@@ -0,0 +1,75 @@ | |||
/* | |||
* Copyright (C) 2013, Matthias Sohn <matthias.sohn@sap.com> | |||
* and other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available | |||
* under the terms of the Eclipse Distribution License v1.0 which | |||
* accompanies this distribution, is reproduced below, and is | |||
* available at http://www.eclipse.org/org/documents/edl-v10.php | |||
* | |||
* All rights reserved. | |||
* | |||
* Redistribution and use in source and binary forms, with or | |||
* without modification, are permitted provided that the following | |||
* conditions are met: | |||
* | |||
* - Redistributions of source code must retain the above copyright | |||
* notice, this list of conditions and the following disclaimer. | |||
* | |||
* - Redistributions in binary form must reproduce the above | |||
* copyright notice, this list of conditions and the following | |||
* disclaimer in the documentation and/or other materials provided | |||
* with the distribution. | |||
* | |||
* - Neither the name of the Eclipse Foundation, Inc. nor the | |||
* names of its contributors may be used to endorse or promote | |||
* products derived from this software without specific prior | |||
* written permission. | |||
* | |||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND | |||
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, | |||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
*/ | |||
package org.eclipse.jgit.pgm; | |||
import org.eclipse.jgit.api.DescribeCommand; | |||
import org.eclipse.jgit.api.Git; | |||
import org.eclipse.jgit.api.errors.RefNotFoundException; | |||
import org.eclipse.jgit.lib.ObjectId; | |||
import org.eclipse.jgit.pgm.internal.CLIText; | |||
import org.kohsuke.args4j.Argument; | |||
@Command(common = true, usage = "usage_Describe") | |||
class Describe extends TextBuiltin { | |||
@Argument(index = 0, metaVar = "metaVar_treeish") | |||
private ObjectId tree; | |||
@Override | |||
protected void run() throws Exception { | |||
DescribeCommand cmd = new Git(db).describe(); | |||
if (tree != null) | |||
cmd.setTarget(tree); | |||
String result = null; | |||
try { | |||
result = cmd.call(); | |||
} catch (RefNotFoundException e) { | |||
throw die(CLIText.get().noNamesFound, e); | |||
} | |||
if (result == null) | |||
throw die(CLIText.get().noNamesFound); | |||
outw.println(result); | |||
} | |||
} |
@@ -180,6 +180,7 @@ public class CLIText extends TranslationBundle { | |||
/***/ public String mostCommonlyUsedCommandsAre; | |||
/***/ public String needApprovalToDestroyCurrentRepository; | |||
/***/ public String noGitRepositoryConfigured; | |||
/***/ public String noNamesFound; | |||
/***/ public String noSuchFile; | |||
/***/ public String noSuchRemoteRef; | |||
/***/ public String noTREESectionInIndex; |