in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/pr/RebasePullRequestHandler.java [49:105]
public Object execute(final ExecutionEvent event) throws ExecutionException {
final TaskData data = getTaskData(event);
if (data == null)
return null;
Job job = new Job(MessageFormat.format(
Messages.RebasePullRequestHandler_RebaseJob, data.getTaskId())) {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
PullRequestComposite prComp = PullRequestConnector
.getPullRequest(data);
if (prComp == null)
return Status.CANCEL_STATUS;
PullRequest request = prComp.getRequest();
Repository repo = PullRequestUtils.getRepository(request);
if (repo == null)
return Status.CANCEL_STATUS;
String branchName = PullRequestUtils.getBranchName(request);
try {
String target = request.getBase().getRef();
Ref targetRef = repo
.findRef(request.getBase().getRef());
if (targetRef != null) {
SubMonitor progress = SubMonitor.convert(monitor,
2);
if (!PullRequestUtils.isCurrentBranch(branchName,
repo)) {
progress.subTask(MessageFormat.format(
Messages.RebasePullRequestHandler_TaskCheckout,
branchName));
BranchOperationUI.checkout(repo, branchName)
.run(progress.newChild(1));
}
progress.subTask(MessageFormat.format(
Messages.RebasePullRequestHandler_TaskRebase,
branchName, target));
new RebaseOperation(repo, targetRef)
.execute(progress.newChild(1));
executeCallback(event);
}
} catch (IOException e) {
GitHubUi.logError(e);
} catch (CoreException e) {
GitHubUi.logError(e);
}
return Status.OK_STATUS;
} finally {
if (monitor != null) {
monitor.done();
}
}
}
};
schedule(job, event);
return null;
}