Source:
public void execute(IProgressMonitor m) throws CoreException { IProgressMonitor monitor = m != null ? m : new NullProgressMonitor(); IWorkspaceRunnable action = new IWorkspaceRunnable() { public void run(IProgressMonitor pm) throws CoreException { pm.beginTask("", 2); pm.subTask(MessageFormat.format( CoreText.CherryPickOperation_cherryPicking, Integer.valueOf(commits.size()))); InteractiveHandler handler = new InteractiveHandler() { public void prepareSteps(List<RebaseTodoLine> steps) { System.out .printf("CherryPickOperation.execute(...).new IWorkspaceRunnable() {...}.run(...).new InteractiveHandler() {...}.prepareSteps()") .println(); for (RebaseTodoLine step : steps) { try { step.setAction(RebaseTodoLine.Action.PICK); } catch (IllegalTodoFileModification e) { } } List<RevCommit> stepCommits = new ArrayList<RevCommit>( commits); Collections.reverse(stepCommits); for (RevCommit commit : stepCommits) { RebaseTodoLine step = new RebaseTodoLine( RebaseTodoLine.Action.PICK, commit.abbreviate(7), ""); steps.add(step); } } public String modifyCommitMessage(String oldMessage) { return oldMessage; } }; try { Git git = new Git(repo); ObjectId headCommitId = repo.resolve(Constants.HEAD); RevCommit headCommit = new RevWalk(repo) .parseCommit(headCommitId); git.rebase().setUpstream(headCommit.getParent(0)) .runInteractively(handler) .setOperation(RebaseCommand.Operation.BEGIN).call(); } catch (GitAPIException e) { throw new TeamException(e.getLocalizedMessage(), e.getCause()); } catch (IOException e) { throw new TeamException(e.getLocalizedMessage(), e.getCause()); } pm.worked(1); ProjectUtil.refreshValidProjects( ProjectUtil.getValidOpenProjects(repo), new SubProgressMonitor(pm, 1)); pm.done(); } }; ResourcesPlugin.getWorkspace().run(action, getSchedulingRule(), IWorkspace.AVOID_UPDATE, monitor); }

Target:
public void execute(IProgressMonitor m) throws CoreException { IProgressMonitor monitor = m != null ? m : new NullProgressMonitor(); IWorkspaceRunnable action = new IWorkspaceRunnable() { public void run(IProgressMonitor pm) throws CoreException { pm.beginTask("", 2); pm.subTask(MessageFormat.format( CoreText.CherryPickOperation_cherryPicking, Integer.valueOf(commits.size()))); InteractiveHandler handler = new InteractiveHandler() { public void prepareSteps(List<RebaseTodoLine> steps) { for (RebaseTodoLine step : steps) { try { step.setAction(RebaseTodoLine.Action.PICK); } catch (IllegalTodoFileModification e) { } } List<RevCommit> stepCommits = new ArrayList<RevCommit>( commits); Collections.reverse(stepCommits); for (RevCommit commit : stepCommits) { RebaseTodoLine step = new RebaseTodoLine( RebaseTodoLine.Action.PICK, commit.abbreviate(7), ""); steps.add(step); } } public String modifyCommitMessage(String oldMessage) { return oldMessage; } }; try { Git git = new Git(repo); ObjectId headCommitId = repo.resolve(Constants.HEAD); RevCommit headCommit = new RevWalk(repo) .parseCommit(headCommitId); git.rebase().setUpstream(headCommit.getParent(0)) .runInteractively(handler) .setOperation(RebaseCommand.Operation.BEGIN).call(); } catch (GitAPIException e) { throw new TeamException(e.getLocalizedMessage(), e.getCause()); } catch (IOException e) { throw new TeamException(e.getLocalizedMessage(), e.getCause()); } pm.worked(1); ProjectUtil.refreshValidProjects( ProjectUtil.getValidOpenProjects(repo), new SubProgressMonitor(pm, 1)); pm.done(); } }; ResourcesPlugin.getWorkspace().run(action, getSchedulingRule(), IWorkspace.AVOID_UPDATE, monitor); }