List of usage examples for org.eclipse.jgit.lib TagBuilder setTagger
public void setTagger(PersonIdent taggerIdent)
From source file:com.googlesource.gerrit.plugins.refprotection.BackupRef.java
License:Open Source License
public void createBackup(RefUpdatedEvent event, ProjectResource project) { String refName = event.getRefName(); try (Repository git = repoManager.openRepository(project.getNameKey())) { String backupRef = get(project, refName); // No-op if the backup branch name is same as the original if (backupRef.equals(refName)) { return; }// w w w . j av a 2s . c o m try (RevWalk revWalk = new RevWalk(git)) { RefUpdateAttribute refUpdate = event.refUpdate.get(); if (cfg.getFromGerritConfig(pluginName).getBoolean("createTag", false)) { TagBuilder tag = new TagBuilder(); AccountAttribute submitter = event.submitter.get(); tag.setTagger(new PersonIdent(submitter.name, submitter.email)); tag.setObjectId(revWalk.parseCommit(ObjectId.fromString(refUpdate.oldRev))); String update = "Non-fast-forward update to"; if (refUpdate.newRev.equals(ObjectId.zeroId().getName())) { update = "Deleted"; } String type = "branch"; String fullMessage = ""; if (refUpdate.refName.startsWith(R_TAGS)) { type = "tag"; try { RevTag origTag = revWalk.parseTag(ObjectId.fromString(refUpdate.oldRev)); SimpleDateFormat format = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy ZZZZ"); PersonIdent taggerIdent = origTag.getTaggerIdent(); String tagger = String.format("Tagger: %s <%s>\nDate: %s", taggerIdent.getName(), taggerIdent.getEmailAddress(), format.format(taggerIdent.getWhen())); fullMessage = "\n\nOriginal tag:\n" + tagger + "\n\n" + origTag.getFullMessage(); } catch (MissingObjectException e) { log.warn("Original tag does not exist", e); } catch (IncorrectObjectTypeException e) { log.warn("Original tag was not a tag", e); } catch (IOException e) { log.warn("Unable to read original tag details", e); } } tag.setMessage(update + " " + type + " " + refUpdate.refName + fullMessage); tag.setTag(backupRef); ObjectInserter inserter = git.newObjectInserter(); ObjectId tagId = inserter.insert(tag); inserter.flush(); RefUpdate tagRef = git.updateRef(tag.getTag()); tagRef.setNewObjectId(tagId); tagRef.setRefLogMessage("tagged deleted branch/tag " + tag.getTag(), false); tagRef.setForceUpdate(false); Result result = tagRef.update(); switch (result) { case NEW: case FORCED: log.debug("Successfully created backup tag"); break; case LOCK_FAILURE: log.error("Failed to lock repository while creating backup tag"); break; case REJECTED: log.error("Tag already exists while creating backup tag"); break; default: log.error("Unknown error while creating backup tag"); } } else { BranchInput input = new BranchInput(); input.ref = backupRef; // We need to parse the commit to ensure if it's a tag, we get the // commit the tag points to! input.revision = ObjectId .toString(revWalk.parseCommit(ObjectId.fromString(refUpdate.oldRev)).getId()); try { createBranchFactory.create(backupRef).apply(project, input); } catch (BadRequestException | AuthException | ResourceConflictException | IOException e) { log.error(e.getMessage(), e); } } } } catch (RepositoryNotFoundException e) { log.error("Repository does not exist", e); } catch (IOException e) { log.error("Could not open repository", e); } }
From source file:org.commonjava.gitwrap.BareGitRepository.java
License:Open Source License
public BareGitRepository createTag(final String tagSource, final String tagName, final String message, final boolean force) throws GitWrapException { try {//from w ww.j av a2 s . com final ObjectId src = repository.resolve(tagSource); if (src == null) { throw new GitWrapException("Cannot resolve tag-source: %s", tagSource); } if (!force && repository.resolve(tagName) != null) { throw new GitWrapException("Tag: %s already exists!", tagName); } String dest = tagName; if (!dest.startsWith(Constants.R_TAGS)) { dest = Constants.R_TAGS + tagName; } final String tagShort = dest.substring(Constants.R_TAGS.length()); final ObjectLoader sourceLoader = repository.open(src); final ObjectInserter inserter = repository.newObjectInserter(); final TagBuilder tag = new TagBuilder(); tag.setTag(tagShort); tag.setTagger(new PersonIdent(repository)); tag.setObjectId(src, sourceLoader.getType()); tag.setMessage(message); final ObjectId tagId = inserter.insert(tag); tag.setTagId(tagId); final String refName = Constants.R_TAGS + tag.getTag(); final RefUpdate tagRef = repository.updateRef(refName); tagRef.setNewObjectId(tag.getTagId()); tagRef.setForceUpdate(force); tagRef.setRefLogMessage("Tagging source: " + src.name() + " as " + tagName, false); final Result updateResult = tagRef.update(); switch (updateResult) { case NEW: case FAST_FORWARD: case FORCED: { break; } case REJECTED: { throw new GitWrapException("Tag already exists: %s", tagName); } default: { throw new GitWrapException("Cannot lock tag: %s", tagName); } } } catch (final IOException e) { throw new GitWrapException("Failed to add tag: %s", e, e.getMessage()); } return this; }
From source file:org.eclipse.egit.core.test.op.TagOperationTest.java
License:Open Source License
@Test public void addTag() throws Exception { assertTrue("Tags should be empty", repository1.getRepository().getTags().isEmpty()); TagBuilder newTag = new TagBuilder(); newTag.setTag("TheNewTag"); newTag.setMessage("Well, I'm the tag"); newTag.setTagger(RawParseUtils.parsePersonIdent(TestUtils.AUTHOR)); newTag.setObjectId(repository1.getRepository().resolve("refs/heads/master"), Constants.OBJ_COMMIT); TagOperation top = new TagOperation(repository1.getRepository(), newTag, false); top.execute(new NullProgressMonitor()); assertFalse("Tags should not be empty", repository1.getRepository().getTags().isEmpty()); try {//www. ja v a 2s . co m top.execute(null); fail("Expected Exception not thrown"); } catch (CoreException e) { // expected } top = new TagOperation(repository1.getRepository(), newTag, true); try { top.execute(null); fail("Expected Exception not thrown"); } catch (CoreException e) { // expected } Ref tagRef = repository1.getRepository().getTags().get("TheNewTag"); RevWalk walk = new RevWalk(repository1.getRepository()); RevTag tag = walk.parseTag(repository1.getRepository().resolve(tagRef.getName())); newTag.setMessage("Another message"); assertFalse("Messages should differ", tag.getFullMessage().equals(newTag.getMessage())); top.execute(null); tag = walk.parseTag(repository1.getRepository().resolve(tagRef.getName())); assertTrue("Messages be same", tag.getFullMessage().equals(newTag.getMessage())); }
From source file:org.eclipse.egit.gitflow.op.AbstractVersionFinishOperation.java
License:Open Source License
/** * @param monitor// ww w .j a v a 2 s. c o m * @param head * @param name * @param message * @throws CoreException */ protected void createTag(IProgressMonitor monitor, RevCommit head, String name, String message) throws CoreException { TagBuilder tag = new TagBuilder(); tag.setTag(name); tag.setTagger(new PersonIdent(repository.getRepository())); tag.setMessage(message); tag.setObjectId(head); new TagOperation(repository.getRepository(), tag, false).execute(monitor); }
From source file:org.eclipse.egit.internal.relengtools.ReleaseWizard.java
License:Open Source License
private void tagProject(IProject project, IProgressMonitor monitor) throws Exception { monitor = new SubProgressMonitor(monitor, 1); monitor.beginTask("Tagging " + project.getName(), 1); final boolean shouldMoveTag = tagPage.isMoveButtonSelected(); final RepositoryMapping rm = RepositoryMapping.getMapping(project); final Repository repository = rm.getRepository(); final RevWalk rw = new RevWalk(repository); final RevObject target = rw.parseAny(repository.resolve(Constants.HEAD)); final PersonIdent personIdent = new PersonIdent(repository); final String tagName = tagPage.getTagString(); final TagBuilder tag = new TagBuilder(); tag.setTag(tagName);//from w ww . j a v a2s .c o m tag.setTagger(personIdent); tag.setObjectId(target); final TagOperation operation = new TagOperation(repository, tag, shouldMoveTag); operation.execute(monitor); monitor.done(); }
From source file:org.eclipse.egit.ui.internal.actions.TagActionHandler.java
License:Open Source License
public Object execute(ExecutionEvent event) throws ExecutionException { repo = getRepository(true, event);// ww w .j ava 2 s. co m if (repo == null) return null; if (!repo.getRepositoryState().canCheckout()) { MessageDialog.openError(getShell(event), UIText.TagAction_cannotCheckout, NLS.bind(UIText.TagAction_repositoryState, repo.getRepositoryState().getDescription())); return null; } String currentBranchName; try { currentBranchName = repo.getBranch(); } catch (IOException e) { Activator.handleError(UIText.TagAction_cannotGetBranchName, e, true); return null; } CreateTagDialog dialog = new CreateTagDialog(getShell(event), currentBranchName, repo); if (dialog.open() != IDialogConstants.OK_ID) return null; final TagBuilder tag = new TagBuilder(); PersonIdent personIdent = new PersonIdent(repo); String tagName = dialog.getTagName(); tag.setTag(tagName); tag.setTagger(personIdent); tag.setMessage(dialog.getTagMessage()); RevObject tagTarget; try { tagTarget = getTagTarget(dialog.getTagCommit()); } catch (IOException e1) { Activator.handleError(UIText.TagAction_unableToResolveHeadObjectId, e1, true); return null; } tag.setObjectId(tagTarget); String tagJobName = NLS.bind(UIText.TagAction_creating, tagName); final boolean shouldMoveTag = dialog.shouldOverWriteTag(); Job tagJob = new Job(tagJobName) { protected IStatus run(IProgressMonitor monitor) { try { new TagOperation(repo, tag, shouldMoveTag).execute(monitor); } catch (CoreException e) { return Activator.createErrorStatus(UIText.TagAction_taggingFailed, e); } finally { GitLightweightDecorator.refresh(); } return Status.OK_STATUS; } @Override public boolean belongsTo(Object family) { if (family.equals(JobFamilies.TAG)) return true; return super.belongsTo(family); } }; tagJob.setUser(true); tagJob.schedule(); return null; }
From source file:org.eclipse.egit.ui.internal.commit.command.CreateTagHandler.java
License:Open Source License
public Object execute(ExecutionEvent event) throws ExecutionException { List<RepositoryCommit> commits = getCommits(event); if (commits.size() == 1) { RepositoryCommit commit = commits.get(0); CreateTagDialog dialog = new CreateTagDialog(HandlerUtil.getActiveShellChecked(event), commit.getRevCommit().getId(), commit.getRepository()); if (dialog.open() != Window.OK) return null; final TagBuilder tag = new TagBuilder(); PersonIdent personIdent = new PersonIdent(commit.getRepository()); String tagName = dialog.getTagName(); tag.setTag(tagName);//from w w w . j av a 2s . c o m tag.setTagger(personIdent); tag.setMessage(dialog.getTagMessage()); tag.setObjectId(commit.getRevCommit()); try { new TagOperation(commit.getRepository(), tag, dialog.shouldOverWriteTag()) .execute(new NullProgressMonitor()); } catch (CoreException e) { throw new ExecutionException(e.getMessage(), e); } } return null; }
From source file:org.eclipse.egit.ui.internal.fetch.FetchGerritChangePage.java
License:Open Source License
private void createTag(final RefSpec spec, final String textForTag, RevCommit commit, IProgressMonitor monitor) throws CoreException { monitor.setTaskName(UIText.FetchGerritChangePage_CreatingTagTaskName); final TagBuilder tag = new TagBuilder(); PersonIdent personIdent = new PersonIdent(repository); tag.setTag(textForTag);/*from w w w .j a v a 2s. com*/ tag.setTagger(personIdent); tag.setMessage(NLS.bind(UIText.FetchGerritChangePage_GeneratedTagMessage, spec.getSource())); tag.setObjectId(commit); new TagOperation(repository, tag, false).execute(monitor); monitor.worked(1); }
From source file:org.eclipse.egit.ui.internal.history.command.CreateTagOnCommitHandler.java
License:Open Source License
public Object execute(ExecutionEvent event) throws ExecutionException { PlotCommit commit = (PlotCommit) getSelection(getPage()).getFirstElement(); final Repository repo = getRepository(event); CreateTagDialog dialog = new CreateTagDialog(HandlerUtil.getActiveShellChecked(event), commit.getId(), repo);/* ww w.j a v a2s . c om*/ if (dialog.open() != Window.OK) return null; final TagBuilder tag = new TagBuilder(); PersonIdent personIdent = new PersonIdent(repo); String tagName = dialog.getTagName(); tag.setTag(tagName); tag.setTagger(personIdent); tag.setMessage(dialog.getTagMessage()); tag.setObjectId(commit); try { new TagOperation(repo, tag, dialog.shouldOverWriteTag()).execute(new NullProgressMonitor()); } catch (CoreException e) { throw new ExecutionException(e.getMessage(), e); } return null; }
From source file:org.eclipse.egit.ui.internal.repository.tree.command.CreateTagCommand.java
License:Open Source License
public Object execute(ExecutionEvent event) throws ExecutionException { RepositoryTreeNode node = getSelectedNodes(event).get(0); final Repository repo = node.getRepository(); if (!repo.getRepositoryState().canCheckout()) { MessageDialog.openError(getShell(event), UIText.TagAction_cannotCheckout, NLS.bind(UIText.TagAction_repositoryState, repo.getRepositoryState().getDescription())); return null; }//from w w w. java 2 s . co m String currentBranchName; try { currentBranchName = repo.getBranch(); } catch (IOException e) { Activator.handleError(e.getMessage(), e, true); // TODO correct message throw new ExecutionException(e.getMessage(), e); } CreateTagDialog dialog = new CreateTagDialog(getView(event).getSite().getShell(), currentBranchName, repo); if (dialog.open() != IDialogConstants.OK_ID) return null; final TagBuilder tag = new TagBuilder(); PersonIdent personIdent = new PersonIdent(repo); String tagName = dialog.getTagName(); tag.setTag(tagName); tag.setTagger(personIdent); tag.setMessage(dialog.getTagMessage()); tag.setObjectId(getTagTarget(dialog.getTagCommit(), repo)); String tagJobName = NLS.bind(UIText.TagAction_creating, tagName); final boolean shouldMoveTag = dialog.shouldOverWriteTag(); Job tagJob = new Job(tagJobName) { protected IStatus run(IProgressMonitor monitor) { try { new TagOperation(repo, tag, shouldMoveTag).execute(monitor); } catch (CoreException e) { return Activator.createErrorStatus(UIText.TagAction_taggingFailed, e); } finally { GitLightweightDecorator.refresh(); } return Status.OK_STATUS; } @Override public boolean belongsTo(Object family) { if (family.equals(JobFamilies.TAG)) return true; return super.belongsTo(family); } }; tagJob.setUser(true); tagJob.schedule(); return null; }