Search in sources :

Example 6 with TagOperation

use of org.eclipse.egit.core.op.TagOperation in project egit by eclipse.

the class FetchGerritChangePage method createTag.

private void createTag(final RefSpec spec, final String textForTag, RevCommit commit, IProgressMonitor monitor) throws CoreException {
    monitor.subTask(UIText.FetchGerritChangePage_CreatingTagTaskName);
    final TagBuilder tag = new TagBuilder();
    PersonIdent personIdent = new PersonIdent(repository);
    tag.setTag(textForTag);
    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);
}
Also used : PersonIdent(org.eclipse.jgit.lib.PersonIdent) TagOperation(org.eclipse.egit.core.op.TagOperation) TagBuilder(org.eclipse.jgit.lib.TagBuilder)

Example 7 with TagOperation

use of org.eclipse.egit.core.op.TagOperation in project egit by eclipse.

the class TagOperationTest method addTag.

@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 {
        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");
    try (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()));
        walk.dispose();
    }
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) Ref(org.eclipse.jgit.lib.Ref) CoreException(org.eclipse.core.runtime.CoreException) RevTag(org.eclipse.jgit.revwalk.RevTag) TagOperation(org.eclipse.egit.core.op.TagOperation) RevWalk(org.eclipse.jgit.revwalk.RevWalk) TagBuilder(org.eclipse.jgit.lib.TagBuilder) Test(org.junit.Test)

Example 8 with TagOperation

use of org.eclipse.egit.core.op.TagOperation in project egit by eclipse.

the class AbstractVersionFinishOperation method createTag.

/**
 * @param monitor
 * @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);
}
Also used : PersonIdent(org.eclipse.jgit.lib.PersonIdent) TagOperation(org.eclipse.egit.core.op.TagOperation) TagBuilder(org.eclipse.jgit.lib.TagBuilder)

Example 9 with TagOperation

use of org.eclipse.egit.core.op.TagOperation in project egit by eclipse.

the class CreateTagOnCommitHandler method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    ObjectId commitId = getSelectedCommitId(event);
    final Repository repo = getRepository(event);
    CreateTagDialog dialog = new CreateTagDialog(HandlerUtil.getActiveShellChecked(event), commitId, repo);
    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(commitId, Constants.OBJ_COMMIT);
    try {
        new TagOperation(repo, tag, dialog.shouldOverWriteTag()).execute(new NullProgressMonitor());
    } catch (CoreException e) {
        throw new ExecutionException(e.getMessage(), e);
    }
    if (dialog.shouldStartPushWizard())
        PushTagsWizard.openWizardDialog(repo, tagName);
    return null;
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) Repository(org.eclipse.jgit.lib.Repository) CoreException(org.eclipse.core.runtime.CoreException) ObjectId(org.eclipse.jgit.lib.ObjectId) CreateTagDialog(org.eclipse.egit.ui.internal.dialogs.CreateTagDialog) PersonIdent(org.eclipse.jgit.lib.PersonIdent) TagOperation(org.eclipse.egit.core.op.TagOperation) ExecutionException(org.eclipse.core.commands.ExecutionException) TagBuilder(org.eclipse.jgit.lib.TagBuilder)

Example 10 with TagOperation

use of org.eclipse.egit.core.op.TagOperation in project egit by eclipse.

the class TagActionHandler method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    final Repository repo = getRepository(true, event);
    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);
    final String tagName = dialog.getTagName();
    tag.setTag(tagName);
    tag.setTagger(personIdent);
    tag.setMessage(dialog.getTagMessage());
    RevObject tagTarget;
    try {
        tagTarget = getTagTarget(repo, 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) {

        @Override
        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 (JobFamilies.TAG.equals(family))
                return true;
            return super.belongsTo(family);
        }
    };
    if (dialog.shouldStartPushWizard()) {
        tagJob.addJobChangeListener(new JobChangeAdapter() {

            @Override
            public void done(IJobChangeEvent jobChangeEvent) {
                if (jobChangeEvent.getResult().isOK())
                    PushTagsWizard.openWizardDialog(repo, tagName);
            }
        });
    }
    tagJob.setUser(true);
    tagJob.schedule();
    return null;
}
Also used : RevObject(org.eclipse.jgit.revwalk.RevObject) TagOperation(org.eclipse.egit.core.op.TagOperation) JobChangeAdapter(org.eclipse.core.runtime.jobs.JobChangeAdapter) IOException(java.io.IOException) IJobChangeEvent(org.eclipse.core.runtime.jobs.IJobChangeEvent) Repository(org.eclipse.jgit.lib.Repository) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) CreateTagDialog(org.eclipse.egit.ui.internal.dialogs.CreateTagDialog) PersonIdent(org.eclipse.jgit.lib.PersonIdent) RevObject(org.eclipse.jgit.revwalk.RevObject) Job(org.eclipse.core.runtime.jobs.Job) TagBuilder(org.eclipse.jgit.lib.TagBuilder)

Aggregations

TagOperation (org.eclipse.egit.core.op.TagOperation)10 TagBuilder (org.eclipse.jgit.lib.TagBuilder)10 Repository (org.eclipse.jgit.lib.Repository)6 PersonIdent (org.eclipse.jgit.lib.PersonIdent)5 CoreException (org.eclipse.core.runtime.CoreException)4 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)3 CreateTagDialog (org.eclipse.egit.ui.internal.dialogs.CreateTagDialog)3 Before (org.junit.Before)3 ExecutionException (org.eclipse.core.commands.ExecutionException)2 RepositoriesViewLabelProvider (org.eclipse.egit.ui.internal.repository.RepositoriesViewLabelProvider)2 RepositoryNode (org.eclipse.egit.ui.internal.repository.tree.RepositoryNode)2 TagsNode (org.eclipse.egit.ui.internal.repository.tree.TagsNode)2 IOException (java.io.IOException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 IJobChangeEvent (org.eclipse.core.runtime.jobs.IJobChangeEvent)1 Job (org.eclipse.core.runtime.jobs.Job)1 JobChangeAdapter (org.eclipse.core.runtime.jobs.JobChangeAdapter)1 RepositoryCommit (org.eclipse.egit.ui.internal.commit.RepositoryCommit)1 LocalNode (org.eclipse.egit.ui.internal.repository.tree.LocalNode)1 ObjectId (org.eclipse.jgit.lib.ObjectId)1