Browse Source

CLI: implement option -d for deleting tags

Change-Id: I438456b76aefd361384729686271288186d3be3b
Signed-off-by: Ned Twigg <ned.twigg@diffplug.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v4.5.0.201609210915-r
Ned Twigg 8 years ago
parent
commit
b67df51203

+ 23
- 0
org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/TagTest.java View File

@@ -46,6 +46,7 @@ import static org.junit.Assert.assertEquals;

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.CLIRepositoryTestCase;
import org.eclipse.jgit.lib.Ref;
import org.junit.Before;
import org.junit.Test;

@@ -70,4 +71,26 @@ public class TagTest extends CLIRepositoryTestCase {
assertEquals("fatal: tag 'test' already exists",
executeUnchecked("git tag test")[0]);
}

@Test
public void testTagDelete() throws Exception {
git.tag().setName("test").call();

Ref ref = git.getRepository().getTags().get("test");
assertEquals("refs/tags/test", ref.getName());

assertEquals("", executeUnchecked("git tag -d test")[0]);
Ref deletedRef = git.getRepository().getTags().get("test");
assertEquals(null, deletedRef);
}

@Test
public void testTagDeleteFail() throws Exception {
try {
assertEquals("fatal: error: tag 'test' not found.",
executeUnchecked("git tag -d test")[0]);
} catch (Die e) {
assertEquals("fatal: error: tag 'test' not found", e.getMessage());
}
}
}

+ 2
- 0
org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties View File

@@ -200,6 +200,7 @@ switchedToNewBranch=Switched to a new branch ''{0}''
switchedToBranch=Switched to branch ''{0}''
tagAlreadyExists=tag ''{0}'' already exists
tagLabel=tag
tagNotFound=error: tag ''{0}'' not found.
taggerInfo=Tagger: {0} <{1}>
timeInMilliSeconds={0} ms
treeIsRequired=argument tree is required
@@ -386,6 +387,7 @@ usage_srcPrefix=show the source prefix instead of "a/"
usage_symbolicVersionForTheProject=Symbolic version for the project
usage_tags=fetch all tags
usage_notags=do not fetch tags
usage_tagDelete=delete tag
usage_tagMessage=tag message
usage_untrackedFilesMode=show untracked files
usage_updateRef=reference to update

+ 23
- 11
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java View File

@@ -68,6 +68,9 @@ class Tag extends TextBuiltin {
@Option(name = "-f", usage = "usage_forceReplacingAnExistingTag")
private boolean force;

@Option(name = "-d", usage = "usage_tagDelete")
private boolean delete;

@Option(name = "-m", metaVar = "metaVar_message", usage = "usage_tagMessage")
private String message = ""; //$NON-NLS-1$

@@ -81,19 +84,28 @@ class Tag extends TextBuiltin {
protected void run() throws Exception {
try (Git git = new Git(db)) {
if (tagName != null) {
TagCommand command = git.tag().setForceUpdate(force)
.setMessage(message).setName(tagName);
if (delete) {
List<String> deletedTags = git.tagDelete().setTags(tagName)
.call();
if (deletedTags.isEmpty()) {
throw die(MessageFormat
.format(CLIText.get().tagNotFound, tagName));
}
} else {
TagCommand command = git.tag().setForceUpdate(force)
.setMessage(message).setName(tagName);

if (object != null) {
try (RevWalk walk = new RevWalk(db)) {
command.setObjectId(walk.parseAny(object));
if (object != null) {
try (RevWalk walk = new RevWalk(db)) {
command.setObjectId(walk.parseAny(object));
}
}
try {
command.call();
} catch (RefAlreadyExistsException e) {
throw die(MessageFormat.format(
CLIText.get().tagAlreadyExists, tagName));
}
}
try {
command.call();
} catch (RefAlreadyExistsException e) {
throw die(MessageFormat.format(CLIText.get().tagAlreadyExists,
tagName));
}
} else {
ListTagCommand command = git.tagList();

+ 1
- 0
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/internal/CLIText.java View File

@@ -269,6 +269,7 @@ public class CLIText extends TranslationBundle {
/***/ public String switchedToBranch;
/***/ public String tagAlreadyExists;
/***/ public String tagLabel;
/***/ public String tagNotFound;
/***/ public String taggerInfo;
/***/ public String timeInMilliSeconds;
/***/ public String tooManyRefsGiven;

Loading…
Cancel
Save