From acedee29f060a0d04a5aa054aff38cc6cda010ec Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Mon, 3 Jun 2019 18:03:59 +0300 Subject: [PATCH] shelf: cleanup - get/load changes before unshelve GitOrigin-RevId: d6dda5451e47dd291c2ee6caf6da0723ca847e2d --- .../openapi/vcs/changes/VcsShelveUtils.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsShelveUtils.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsShelveUtils.java index dd7de13c2247..91c072e1ea61 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsShelveUtils.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsShelveUtils.java @@ -41,16 +41,17 @@ public class VcsShelveUtils { VirtualFile baseDir = project.getBaseDir(); assert baseDir != null; final String projectPath = baseDir.getPath() + "/"; + final List changes = shelvedChangeList.getChanges(project); + List binaryFiles = shelvedChangeList.getBinaryFiles(); LOG.info("refreshing files "); // The changes are temporary copied to the first local change list, the next operation will restore them back // Refresh files that might be affected by unshelve - refreshFilesBeforeUnshelve(project, shelvedChangeList, projectPath); + refreshFilesBeforeUnshelve(projectPath, changes, binaryFiles); LOG.info("Unshelving shelvedChangeList: " + shelvedChangeList); - final List changes = shelvedChangeList.getChanges(project); // we pass null as target change list for Patch Applier to do NOTHING with change lists - shelveManager.unshelveChangeList(shelvedChangeList, changes, shelvedChangeList.getBinaryFiles(), targetChangeList, false, true, + shelveManager.unshelveChangeList(shelvedChangeList, changes, binaryFiles, targetChangeList, false, true, true, leftConflictTitle, rightConflictTitle, true); ApplicationManager.getApplication().invokeAndWait(() -> markUnshelvedFilesNonUndoable(project, changes)); } @@ -72,24 +73,26 @@ public class VcsShelveUtils { } } - private static void refreshFilesBeforeUnshelve(final Project project, ShelvedChangeList shelvedChangeList, String projectPath) { + private static void refreshFilesBeforeUnshelve(String projectPath, + @NotNull List shelvedChanges, + @NotNull List binaryFiles) { HashSet filesToRefresh = new HashSet<>(); - for (ShelvedChange c : shelvedChangeList.getChanges(project)) { + shelvedChanges.forEach(c -> { if (c.getBeforePath() != null) { filesToRefresh.add(new File(projectPath + c.getBeforePath())); } if (c.getAfterPath() != null) { filesToRefresh.add(new File(projectPath + c.getAfterPath())); } - } - for (ShelvedBinaryFile f : shelvedChangeList.getBinaryFiles()) { + }); + binaryFiles.forEach(f -> { if (f.BEFORE_PATH != null) { filesToRefresh.add(new File(projectPath + f.BEFORE_PATH)); } if (f.AFTER_PATH != null) { filesToRefresh.add(new File(projectPath + f.AFTER_PATH)); } - } + }); LocalFileSystem.getInstance().refreshIoFiles(filesToRefresh); }