Example usage for org.eclipse.jgit.lib TagBuilder setTagger

List of usage examples for org.eclipse.jgit.lib TagBuilder setTagger

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib TagBuilder setTagger.

Prototype

public void setTagger(PersonIdent taggerIdent) 

Source Link

Document

Set the creator of this tag.

Usage

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;
}