diff options
author | Shawn Pearce <spearce@spearce.org> | 2010-10-12 15:05:55 -0400 |
---|---|---|
committer | Code Review <codereview-daemon@eclipse.org> | 2010-10-12 15:05:55 -0400 |
commit | 4ac3d9814c72c2cb14fc2bea4ea467f08ed44c48 (patch) | |
tree | 4d063abfd451afca2118f84e0a3967eb55396de1 /org.eclipse.jgit.pgm/src/org/eclipse | |
parent | 285d08d8b73ebff8da39155d8174f6c900e6a001 (diff) | |
parent | b3446bf387a082218843e67bd7a06dff0a662b01 (diff) | |
download | jgit-4ac3d9814c72c2cb14fc2bea4ea467f08ed44c48.tar.gz jgit-4ac3d9814c72c2cb14fc2bea4ea467f08ed44c48.zip |
Merge "Update Tag to use TagCommand API"
Diffstat (limited to 'org.eclipse.jgit.pgm/src/org/eclipse')
-rw-r--r-- | org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java | 66 |
1 files changed, 11 insertions, 55 deletions
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java index 19454b1868..e6849d7e88 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java @@ -1,6 +1,7 @@ /* - * Copyright (C) 2008, Charles O'Farrell <charleso@charleso.org> + * Copyright (C) 2010, Chris Aniszczyk <caniszczyk@gmail.com> * Copyright (C) 2009, Google Inc. + * Copyright (C) 2008, Charles O'Farrell <charleso@charleso.org> * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg.lists@dewire.com> * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> @@ -47,14 +48,10 @@ package org.eclipse.jgit.pgm; -import java.text.MessageFormat; - -import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.TagCommand; import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.ObjectInserter; -import org.eclipse.jgit.lib.ObjectLoader; -import org.eclipse.jgit.lib.PersonIdent; -import org.eclipse.jgit.lib.RefUpdate; +import org.eclipse.jgit.revwalk.RevWalk; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; @@ -74,55 +71,14 @@ class Tag extends TextBuiltin { @Override protected void run() throws Exception { - if (object == null) { - object = db.resolve(Constants.HEAD); - if (object == null) - throw die(MessageFormat.format(CLIText.get().cannotResolve, Constants.HEAD)); - } - - if (!tagName.startsWith(Constants.R_TAGS)) - tagName = Constants.R_TAGS + tagName; + Git git = new Git(db); + TagCommand command = git.tag().setForceUpdate(force).setMessage(message).setName(tagName); - String shortName = tagName.substring(Constants.R_TAGS.length()); - if (!force && db.resolve(tagName) != null) { - throw die(MessageFormat.format(CLIText.get().fatalErrorTagExists - , shortName)); + if (object != null) { + RevWalk walk = new RevWalk(db); + command.setObjectId(walk.parseAny(object)); } - final ObjectLoader ldr = db.open(object); - final ObjectInserter inserter = db.newObjectInserter(); - final ObjectId id; - try { - final org.eclipse.jgit.lib.TagBuilder tag; - - tag = new org.eclipse.jgit.lib.TagBuilder(); - tag.setObjectId(object, ldr.getType()); - tag.setTagger(new PersonIdent(db)); - tag.setMessage(message.replaceAll("\r", "")); - tag.setTag(shortName); - id = inserter.insert(tag); - inserter.flush(); - } finally { - inserter.release(); - } - - RefUpdate ru = db.updateRef(tagName); - ru.setForceUpdate(force); - ru.setNewObjectId(id); - ru.setRefLogMessage("tagged " + shortName, false); - switch (ru.update()) { - case NEW: - case FAST_FORWARD: - case FORCED: - break; - - case REJECTED: - throw die(MessageFormat.format(CLIText.get().fatalErrorTagExists, - shortName)); - - default: - throw die(MessageFormat.format(CLIText.get().failedToLockTag, - shortName, ru.getResult())); - } + command.call(); } } |