void () { LOG.info("starting rollback..."); Collection<GitRepository> repositoriesForSmartRollback = new ArrayList<>(); Collection<GitRepository> repositoriesForSimpleRollback = new ArrayList<>(); Collection<GitRepository> repositoriesForMergeRollback = new ArrayList<>(); for (GitRepository repository : getSuccessfulRepositories()) { if (myConflictedRepositories.containsKey(repository)) { repositoriesForMergeRollback.add(repository); } else if (thereAreLocalChangesIn(repository)) { repositoriesForSmartRollback.add(repository); } else { repositoriesForSimpleRollback.add(repository); } } LOG.info("for smart rollback: " + DvcsUtil.getShortNames(repositoriesForSmartRollback) + "; for simple rollback: " + DvcsUtil.getShortNames(repositoriesForSimpleRollback) + "; for merge rollback: " + DvcsUtil.getShortNames(repositoriesForMergeRollback)); GitCompoundResult result = smartRollback(repositoriesForSmartRollback); for (GitRepository repository : repositoriesForSimpleRollback) { result.append(repository, rollback(repository)); } for (GitRepository repository : repositoriesForMergeRollback) { result.append(repository, rollbackMerge(repository)); } myConflictedRepositories.clear(); if (!result.totalSuccess()) { VcsNotifier.getInstance(myProject).notifyError(MERGE_ROLLBACK_ERROR, GitBundle.message("merge.operation.error.during.rollback"), result.getErrorOutputWithReposIndication(), true); } LOG.info("rollback finished."); }