/*******************************************************************************
* Copyright (C) 2015, Max Hohenegger <eclipse@hohenegger.eu>
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.egit.gitflow.op;
import java.io.IOException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.egit.core.op.RebaseOperation;
import static org.eclipse.egit.gitflow.Activator.error;
import org.eclipse.egit.gitflow.GitFlowRepository;
import org.eclipse.egit.gitflow.WrongGitFlowStateException;
import org.eclipse.egit.gitflow.internal.CoreText;
import org.eclipse.jgit.api.RebaseResult;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.Repository;
/**
* git flow feature rebase
*/
public final class FeatureRebaseOperation extends GitFlowOperation {
private RebaseResult operationResult;
/**
* @param repository
*/
public FeatureRebaseOperation(GitFlowRepository repository) {
super(repository);
}
@Override
public void execute(IProgressMonitor monitor) throws CoreException {
try {
if (!repository.isFeature()) {
throw new WrongGitFlowStateException(
CoreText.FeatureRebaseOperation_notOnAFeatureBranch);
}
Repository jgitRepo = repository.getRepository();
Ref develop = jgitRepo.exactRef(repository.getConfig().getDevelopFull());
RebaseOperation op = new RebaseOperation(jgitRepo, develop);
op.execute(monitor);
operationResult = op.getResult();
} catch (WrongGitFlowStateException | IOException e) {
throw new CoreException(error(e.getMessage(), e));
}
}
/**
* @return result set after operation was executed
*/
public RebaseResult getOperationResult() {
return operationResult;
}
}