public Object execute()

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;
	}