in org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/internal/github/ui/pr/MergePullRequestHandler.java [49:104]
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.MergePullRequestHandler_MergeJob, 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 target = request.getBase().getRef();
String branchName = PullRequestUtils.getBranchName(request);
try {
Ref sourceRef = repo.findRef(branchName);
if (sourceRef != null) {
SubMonitor progress = SubMonitor.convert(monitor,
2);
if (!PullRequestUtils.isCurrentBranch(target,
repo)) {
progress.subTask(MessageFormat.format(
Messages.MergePullRequestHandler_TaskCheckout,
target));
BranchOperationUI.checkout(repo, target)
.run(progress.newChild(1));
}
progress.subTask(MessageFormat.format(
Messages.MergePullRequestHandler_TaskMerge,
branchName, target));
new MergeOperation(repo, branchName)
.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;
}