Search in sources :

Example 6 with WrongGitFlowStateException

use of org.eclipse.egit.gitflow.WrongGitFlowStateException in project egit by eclipse.

the class ReleaseStartHandler method getStartCommit.

private String getStartCommit(ExecutionEvent event) throws ExecutionException {
    ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
    IStructuredSelection selection = SelectionUtils.getStructuredSelection(currentSelection);
    if (selection.getFirstElement() instanceof PlotCommit) {
        RevCommit plotCommit = (RevCommit) selection.getFirstElement();
        return plotCommit.getName();
    } else {
        GitFlowRepository gitFlowRepository = GitFlowHandlerUtil.getRepository(event);
        if (gitFlowRepository == null) {
            throw new ExecutionException(UIText.ReleaseStartHandler_startCommitCouldNotBeDetermined);
        }
        RevCommit head;
        try {
            head = gitFlowRepository.findHead();
        } catch (WrongGitFlowStateException e) {
            throw new ExecutionException(e.getMessage(), e);
        }
        return head.getName();
    }
}
Also used : PlotCommit(org.eclipse.jgit.revplot.PlotCommit) ISelection(org.eclipse.jface.viewers.ISelection) WrongGitFlowStateException(org.eclipse.egit.gitflow.WrongGitFlowStateException) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) ExecutionException(org.eclipse.core.commands.ExecutionException) GitFlowRepository(org.eclipse.egit.gitflow.GitFlowRepository) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 7 with WrongGitFlowStateException

use of org.eclipse.egit.gitflow.WrongGitFlowStateException in project egit by eclipse.

the class InitDialog method okPressed.

@Override
protected void okPressed() {
    String master = gitflowInitConfig.getMaster();
    Repository repository = gfRepo.getRepository();
    if (isMasterBranchAvailable(master, repository)) {
        super.okPressed();
        return;
    }
    boolean createBranch = openQuestion(getShell(), InitDialog_masterBranchIsMissing, NLS.bind(InitDialog_selectedMasterBranchDoesNotExistCreateNow, master));
    if (!createBranch) {
        return;
    }
    try {
        RevCommit head = gfRepo.findHead();
        new CreateLocalBranchOperation(repository, master, head).execute(null);
    } catch (CoreException | WrongGitFlowStateException e) {
        throw new RuntimeException(e);
    }
    super.okPressed();
}
Also used : InitDialog_initializeRepository(org.eclipse.egit.gitflow.ui.internal.UIText.InitDialog_initializeRepository) GitFlowRepository(org.eclipse.egit.gitflow.GitFlowRepository) Repository(org.eclipse.jgit.lib.Repository) CoreException(org.eclipse.core.runtime.CoreException) WrongGitFlowStateException(org.eclipse.egit.gitflow.WrongGitFlowStateException) CreateLocalBranchOperation(org.eclipse.egit.core.op.CreateLocalBranchOperation) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 8 with WrongGitFlowStateException

use of org.eclipse.egit.gitflow.WrongGitFlowStateException in project egit by eclipse.

the class InitOperation method execute.

@Override
public void execute(IProgressMonitor monitor) throws CoreException {
    try {
        setPrefixes(feature, release, hotfix, versionTag);
        setBranches(develop, master);
        repository.getRepository().getConfig().save();
    } catch (IOException e) {
        throw new CoreException(error(e.getMessage(), e));
    }
    SubMonitor progress = SubMonitor.convert(monitor, 3);
    if (!repository.hasBranches()) {
        new CommitOperation(repository.getRepository(), repository.getConfig().getUser(), repository.getConfig().getUser(), CoreText.InitOperation_initialCommit).execute(progress.newChild(1));
    }
    try {
        if (!isMasterBranchAvailable()) {
            throw new CoreException(error(NLS.bind(CoreText.InitOperation_localMasterDoesNotExist, master)));
        }
        RevCommit head = repository.findHead();
        if (!repository.hasBranch(develop)) {
            CreateLocalBranchOperation branchFromHead = createBranchFromHead(develop, head);
            branchFromHead.execute(progress.newChild(1));
            BranchOperation checkoutOperation = new BranchOperation(repository.getRepository(), develop);
            checkoutOperation.execute(progress.newChild(1));
        }
    } catch (WrongGitFlowStateException e) {
        throw new CoreException(error(e));
    } catch (GitAPIException e) {
        throw new CoreException(error(e.getMessage(), e));
    }
}
Also used : GitAPIException(org.eclipse.jgit.api.errors.GitAPIException) CoreException(org.eclipse.core.runtime.CoreException) CommitOperation(org.eclipse.egit.core.op.CommitOperation) CreateLocalBranchOperation(org.eclipse.egit.core.op.CreateLocalBranchOperation) BranchOperation(org.eclipse.egit.core.op.BranchOperation) SubMonitor(org.eclipse.core.runtime.SubMonitor) WrongGitFlowStateException(org.eclipse.egit.gitflow.WrongGitFlowStateException) IOException(java.io.IOException) CreateLocalBranchOperation(org.eclipse.egit.core.op.CreateLocalBranchOperation) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 9 with WrongGitFlowStateException

use of org.eclipse.egit.gitflow.WrongGitFlowStateException in project egit by eclipse.

the class ReleaseFinishHandler method execute.

@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
    final GitFlowRepository gfRepo = GitFlowHandlerUtil.getRepository(event);
    if (gfRepo == null) {
        return error(UIText.Handlers_noGitflowRepositoryFound);
    }
    final ReleaseFinishOperation releaseFinishOperation;
    try {
        releaseFinishOperation = new ReleaseFinishOperation(gfRepo);
        String releaseBranch = gfRepo.getRepository().getBranch();
        String develop = gfRepo.getConfig().getDevelop();
        JobUtil.scheduleUserWorkspaceJob(releaseFinishOperation, UIText.ReleaseFinishHandler_finishingRelease, JobFamilies.GITFLOW_FAMILY);
        IJobManager jobMan = Job.getJobManager();
        jobMan.join(JobFamilies.GITFLOW_FAMILY, null);
        MergeResult mergeResult = releaseFinishOperation.getMergeResult();
        MergeStatus mergeStatus = mergeResult.getMergeStatus();
        if (!MergeStatus.CONFLICTING.equals(mergeStatus)) {
            return null;
        }
        if (handleConflictsOnMaster(gfRepo)) {
            return null;
        }
        MultiStatus status = createMergeConflictInfo(develop, releaseBranch, mergeResult);
        ErrorDialog.openError(null, UIText.ReleaseFinishHandler_Conflicts, null, status);
    } catch (WrongGitFlowStateException | CoreException | IOException | OperationCanceledException | InterruptedException e) {
        return error(e.getMessage(), e);
    }
    return null;
}
Also used : ReleaseFinishOperation(org.eclipse.egit.gitflow.op.ReleaseFinishOperation) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) MergeResult(org.eclipse.jgit.api.MergeResult) MultiStatus(org.eclipse.core.runtime.MultiStatus) IJobManager(org.eclipse.core.runtime.jobs.IJobManager) IOException(java.io.IOException) CoreException(org.eclipse.core.runtime.CoreException) MergeStatus(org.eclipse.jgit.api.MergeResult.MergeStatus) WrongGitFlowStateException(org.eclipse.egit.gitflow.WrongGitFlowStateException) GitFlowRepository(org.eclipse.egit.gitflow.GitFlowRepository)

Aggregations

WrongGitFlowStateException (org.eclipse.egit.gitflow.WrongGitFlowStateException)9 CoreException (org.eclipse.core.runtime.CoreException)7 GitFlowRepository (org.eclipse.egit.gitflow.GitFlowRepository)7 IOException (java.io.IOException)6 Repository (org.eclipse.jgit.lib.Repository)4 RevCommit (org.eclipse.jgit.revwalk.RevCommit)4 OperationCanceledException (org.eclipse.core.runtime.OperationCanceledException)3 MultiStatus (org.eclipse.core.runtime.MultiStatus)2 IJobManager (org.eclipse.core.runtime.jobs.IJobManager)2 BranchOperation (org.eclipse.egit.core.op.BranchOperation)2 CreateLocalBranchOperation (org.eclipse.egit.core.op.CreateLocalBranchOperation)2 MergeResult (org.eclipse.jgit.api.MergeResult)2 MergeStatus (org.eclipse.jgit.api.MergeResult.MergeStatus)2 GitAPIException (org.eclipse.jgit.api.errors.GitAPIException)2 ExecutionException (org.eclipse.core.commands.ExecutionException)1 SubMonitor (org.eclipse.core.runtime.SubMonitor)1 IJobChangeEvent (org.eclipse.core.runtime.jobs.IJobChangeEvent)1 JobChangeAdapter (org.eclipse.core.runtime.jobs.JobChangeAdapter)1 CommitOperation (org.eclipse.egit.core.op.CommitOperation)1 RebaseOperation (org.eclipse.egit.core.op.RebaseOperation)1