mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
shelf: refactoring - create new ShelvedChangeList with changes, separate methods for loading changes
* copy changes from previous shelved changelist if possible; * avoid loading changed from patch file; * create changes for shelvedList from already loaded or passed list of FilePatch; * add annotations; * update tests; GitOrigin-RevId: ccc06a4f29bcf74026a9e3a1192d9f158388e5cc
This commit is contained in:
committed by
intellij-monorepo-bot
parent
da1723b438
commit
308d751f5a
@@ -28,6 +28,7 @@ import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class VcsShelveUtils {
|
||||
private static final Logger LOG = Logger.getInstance(VcsShelveUtils.class.getName());
|
||||
@@ -41,7 +42,9 @@ public class VcsShelveUtils {
|
||||
VirtualFile baseDir = project.getBaseDir();
|
||||
assert baseDir != null;
|
||||
final String projectPath = baseDir.getPath() + "/";
|
||||
final List<ShelvedChange> changes = shelvedChangeList.getChanges(project);
|
||||
|
||||
shelvedChangeList.loadChangesIfNeeded(project);
|
||||
final List<ShelvedChange> changes = Objects.requireNonNull(shelvedChangeList.getChanges());
|
||||
List<ShelvedBinaryFile> binaryFiles = shelvedChangeList.getBinaryFiles();
|
||||
|
||||
LOG.info("refreshing files ");
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ public class DiffShelvedChangesActionProvider implements AnActionExtensionProvid
|
||||
List<ShelvedChangeList> changeLists = ShelvedChangesViewManager.getShelvedLists(dc);
|
||||
ShelvedChangeList changeList = assertNotNull(ContainerUtil.getFirstItem(changeLists));
|
||||
|
||||
final List<ShelvedChange> textChanges = changeList.getChanges(project);
|
||||
final List<ShelvedChange> textChanges = Objects.requireNonNull(changeList.getChanges());
|
||||
final List<ShelvedBinaryFile> binaryChanges = changeList.getBinaryFiles();
|
||||
|
||||
final List<ShelveDiffRequestProducer> diffRequestProducers = new ArrayList<>();
|
||||
|
||||
+39
-28
@@ -35,6 +35,7 @@ import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.project.ProjectKt;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import com.intellij.util.messages.Topic;
|
||||
import com.intellij.util.text.CharArrayCharSequence;
|
||||
@@ -66,9 +67,11 @@ import static com.intellij.openapi.util.io.FileUtil.toSystemIndependentName;
|
||||
import static com.intellij.openapi.util.text.StringUtil.notNullize;
|
||||
import static com.intellij.openapi.vcs.changes.ChangeListUtil.getChangeListNameForUnshelve;
|
||||
import static com.intellij.openapi.vcs.changes.ChangeListUtil.getPredefinedChangeList;
|
||||
import static com.intellij.openapi.vcs.changes.shelf.ShelvedChangeList.createShelvedChangesFromFilePatches;
|
||||
import static com.intellij.util.ObjectUtils.assertNotNull;
|
||||
import static com.intellij.util.ObjectUtils.chooseNotNull;
|
||||
import static com.intellij.util.containers.ContainerUtil.*;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
@State(name = "ShelveChangesManager", storages = {@Storage(StoragePathMacros.WORKSPACE_FILE)})
|
||||
public class ShelveChangesManager implements PersistentStateComponent<Element>, ProjectComponent {
|
||||
@@ -244,7 +247,7 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
if (!list.isValid()) continue;
|
||||
try {
|
||||
File newTargetDirectory = suggestPatchName(myProject, list.DESCRIPTION, toFile, "");
|
||||
ShelvedChangeList migratedList = createChangelistCopy(list, newTargetDirectory);
|
||||
ShelvedChangeList migratedList = createChangelistCopyWithChanges(list, newTargetDirectory);
|
||||
newSchemeManager.addScheme(migratedList, false);
|
||||
indicator.checkCanceled();
|
||||
}
|
||||
@@ -435,7 +438,9 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
baseRevisionsOfDvcsIntoContext(textChanges, commitContext);
|
||||
ShelfFileProcessorUtil.savePatchFile(myProject, patchFile, patches, null, commitContext);
|
||||
|
||||
final ShelvedChangeList changeList = new ShelvedChangeList(patchFile.toString(), commitMessage.replace('\n', ' '), binaryFiles);
|
||||
final ShelvedChangeList changeList = new ShelvedChangeList(patchFile.toString(), commitMessage.replace('\n', ' '), binaryFiles,
|
||||
createShelvedChangesFromFilePatches(myProject, patchFile.toString(),
|
||||
patches));
|
||||
changeList.markToDelete(markToBeDeleted);
|
||||
changeList.setName(schemePatchDir.getName());
|
||||
ProgressManager.checkCanceled();
|
||||
@@ -485,7 +490,9 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
File schemePatchDir = generateUniqueSchemePatchDir(fileName, true);
|
||||
File patchFile = getPatchFileInConfigDir(schemePatchDir);
|
||||
ShelfFileProcessorUtil.savePatchFile(myProject, patchFile, patches, patchTransitExtensions, new CommitContext());
|
||||
final ShelvedChangeList changeList = new ShelvedChangeList(patchFile.toString(), fileName.replace('\n', ' '), new SmartList<>());
|
||||
final ShelvedChangeList changeList = new ShelvedChangeList(patchFile.toString(), fileName.replace('\n', ' '), new SmartList<>(),
|
||||
createShelvedChangesFromFilePatches(myProject, patchFile.getPath(),
|
||||
patches));
|
||||
changeList.setName(schemePatchDir.getName());
|
||||
mySchemeManager.addScheme(changeList, false);
|
||||
return changeList;
|
||||
@@ -514,6 +521,7 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
return result;
|
||||
}
|
||||
|
||||
@CalledInBackground
|
||||
public List<ShelvedChangeList> importChangeLists(final Collection<? extends VirtualFile> files,
|
||||
final Consumer<? super VcsException> exceptionConsumer) {
|
||||
final List<ShelvedChangeList> result = new ArrayList<>(files.size());
|
||||
@@ -523,20 +531,22 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
filesProgress.updateIndicator(file);
|
||||
final String description = file.getNameWithoutExtension().replace('_', ' ');
|
||||
File schemeNameDir = generateUniqueSchemePatchDir(description, true);
|
||||
final File patchPath = getPatchFileInConfigDir(schemeNameDir);
|
||||
final ShelvedChangeList list = new ShelvedChangeList(patchPath.getPath(), description, new SmartList<>(),
|
||||
file.getTimeStamp());
|
||||
list.setName(schemeNameDir.getName());
|
||||
final File patchFile = getPatchFileInConfigDir(schemeNameDir);
|
||||
String patchPath = patchFile.getPath();
|
||||
try {
|
||||
final List<TextFilePatch> patchesList = loadPatches(myProject, file.getPath(), new CommitContext());
|
||||
if (!patchesList.isEmpty()) {
|
||||
FileUtil.copy(new File(file.getPath()), patchPath);
|
||||
// add only if ok to read patch
|
||||
List<? extends FilePatch> filePatches = loadPatchesWithoutContent(myProject, patchPath, new CommitContext());
|
||||
if (!filePatches.isEmpty()) {
|
||||
FileUtil.copy(new File(file.getPath()), patchFile);
|
||||
final ShelvedChangeList list =
|
||||
new ShelvedChangeList(patchPath, description, new SmartList<>(),
|
||||
createShelvedChangesFromFilePatches(myProject, patchPath, filePatches),
|
||||
file.getTimeStamp());
|
||||
list.setName(schemeNameDir.getName());
|
||||
mySchemeManager.addScheme(list, false);
|
||||
result.add(list);
|
||||
}
|
||||
}
|
||||
catch (IOException | PatchSyntaxException e) {
|
||||
catch (Exception e) {
|
||||
exceptionConsumer.consume(new VcsException(e));
|
||||
}
|
||||
}
|
||||
@@ -930,7 +940,7 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
for (ShelvedChangeList changeList : selectedChangeLists) {
|
||||
List<ShelvedChange> changesForChangelist =
|
||||
new ArrayList<>(intersection(changeList.getChanges(myProject), selectedChanges));
|
||||
new ArrayList<>(intersection(requireNonNull(changeList.getChanges()), selectedChanges));
|
||||
List<ShelvedBinaryFile> binariesForChangelist =
|
||||
new ArrayList<>(intersection(changeList.getBinaryFiles(), selectedBinaryChanges));
|
||||
boolean shouldUnshelveAllList = changesForChangelist.isEmpty() && binariesForChangelist.isEmpty();
|
||||
@@ -1049,11 +1059,12 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
boolean delete) {
|
||||
|
||||
try {
|
||||
ShelvedChangeList listCopy = createChangelistCopy(changeList, generateUniqueSchemePatchDir(changeList.DESCRIPTION, true));
|
||||
ShelvedChangeList listCopy = createChangelistCopyWithChanges(changeList, generateUniqueSchemePatchDir(changeList.DESCRIPTION, true));
|
||||
listCopy.updateDate();
|
||||
//changes should be loaded
|
||||
saveRemainingChangesInList(changeList, remainingPatches, remainingBinaries, commitContext);
|
||||
|
||||
removeFromList(listCopy, changeList.getChanges(myProject), changeList.getBinaryFiles());
|
||||
removeFromListWithChanges(listCopy, requireNonNull(changeList.getChanges()), changeList.getBinaryFiles());
|
||||
if (delete) {
|
||||
markChangeListAsDeleted(listCopy);
|
||||
}
|
||||
@@ -1075,31 +1086,30 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
writePatchesToFile(myProject, changeList.PATH, remainingPatches, commitContext);
|
||||
|
||||
changeList.getBinaryFiles().retainAll(remainingBinaries);
|
||||
changeList.clearLoadedChanges();
|
||||
changeList.setChanges(createShelvedChangesFromFilePatches(myProject, changeList.PATH, remainingPatches));
|
||||
}
|
||||
|
||||
void saveListAsScheme(@NotNull ShelvedChangeList list) {
|
||||
if (!list.getBinaryFiles().isEmpty() ||
|
||||
!list.getChanges(myProject).isEmpty()) {
|
||||
if (!list.getBinaryFiles().isEmpty() || !isEmpty(list.getChanges())) {
|
||||
// all newly create ShelvedChangeList have to be added to SchemesManger as new scheme
|
||||
mySchemeManager.addScheme(list, false);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
ShelvedChangeList createChangelistCopy(@NotNull ShelvedChangeList changeList, @NotNull File targetDir)
|
||||
ShelvedChangeList createChangelistCopyWithChanges(@NotNull ShelvedChangeList changeList, @NotNull File targetDir)
|
||||
throws IOException {
|
||||
final File newPath = getPatchFileInConfigDir(targetDir);
|
||||
FileUtil.copy(new File(changeList.PATH), newPath);
|
||||
changeList.loadChangesIfNeeded(myProject);
|
||||
|
||||
final ShelvedChangeList listCopy =
|
||||
new ShelvedChangeList(newPath.getAbsolutePath(), changeList.DESCRIPTION, copyBinaryFiles(changeList, targetDir),
|
||||
changeList.DATE.getTime());
|
||||
ContainerUtilRt.newArrayList(requireNonNull(changeList.getChanges())), changeList.DATE.getTime());
|
||||
listCopy.markToDelete(changeList.isMarkedToDelete());
|
||||
listCopy.setRecycled(changeList.isRecycled());
|
||||
listCopy.setDeleted(changeList.isDeleted());
|
||||
listCopy.setName(targetDir.getName());
|
||||
//load changes
|
||||
listCopy.getChanges(myProject);
|
||||
return listCopy;
|
||||
}
|
||||
|
||||
@@ -1140,9 +1150,10 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
return new HashSet<>(ContainerUtil.notNullize(myShelvingFiles));
|
||||
}
|
||||
|
||||
private void removeFromList(@NotNull final ShelvedChangeList listCopy,
|
||||
@NotNull List<? extends ShelvedChange> shelvedChanges,
|
||||
@NotNull List<? extends ShelvedBinaryFile> shelvedBinaryChanges) {
|
||||
private void removeFromListWithChanges(@NotNull final ShelvedChangeList listCopy,
|
||||
@NotNull List<? extends ShelvedChange> shelvedChanges,
|
||||
@NotNull List<? extends ShelvedBinaryFile> shelvedBinaryChanges) {
|
||||
//listCopy should contain loaded changes
|
||||
removeBinaries(listCopy, shelvedBinaryChanges);
|
||||
removeChanges(listCopy, shelvedChanges);
|
||||
|
||||
@@ -1151,7 +1162,7 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
final CommitContext commitContext = new CommitContext();
|
||||
final List<FilePatch> patches = new ArrayList<>();
|
||||
List<TextFilePatch> filePatches = loadPatches(myProject, listCopy.PATH, commitContext);
|
||||
for (ShelvedChange change : Objects.requireNonNull(listCopy.getChanges(myProject))) {
|
||||
for (ShelvedChange change : requireNonNull(listCopy.getChanges())) {
|
||||
patches.add(find(filePatches, patch -> change.getBeforePath().equals(patch.getBeforeName())));
|
||||
}
|
||||
writePatchesToFile(myProject, listCopy.PATH, patches, commitContext);
|
||||
@@ -1162,8 +1173,8 @@ public class ShelveChangesManager implements PersistentStateComponent<Element>,
|
||||
}
|
||||
}
|
||||
|
||||
private void removeChanges(@NotNull ShelvedChangeList list, @NotNull List<? extends ShelvedChange> shelvedChanges) {
|
||||
for (Iterator<ShelvedChange> iterator = list.getChanges(myProject).iterator(); iterator.hasNext(); ) {
|
||||
private static void removeChanges(@NotNull ShelvedChangeList list, @NotNull List<? extends ShelvedChange> shelvedChanges) {
|
||||
for (Iterator<ShelvedChange> iterator = requireNonNull(list.getChanges()).iterator(); iterator.hasNext(); ) {
|
||||
final ShelvedChange change = iterator.next();
|
||||
for (ShelvedChange newChange : shelvedChanges) {
|
||||
if (Comparing.equal(change.getBeforePath(), newChange.getBeforePath()) &&
|
||||
|
||||
+51
-23
@@ -29,9 +29,11 @@ import com.intellij.openapi.vcs.FileStatus;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -48,26 +50,34 @@ public class ShelvedChangeList implements JDOMExternalizable, ExternalizableSche
|
||||
public String PATH;
|
||||
public String DESCRIPTION;
|
||||
public Date DATE;
|
||||
private List<ShelvedChange> myChanges;
|
||||
private volatile List<ShelvedChange> myChanges;
|
||||
private List<ShelvedBinaryFile> myBinaryFiles;
|
||||
private boolean myRecycled;
|
||||
private boolean myToDelete;
|
||||
private boolean myIsDeleted;
|
||||
private String mySchemeName;
|
||||
|
||||
public ShelvedChangeList() {
|
||||
ShelvedChangeList() {
|
||||
}
|
||||
|
||||
public ShelvedChangeList(final String path, final String description, final List<ShelvedBinaryFile> binaryFiles) {
|
||||
this(path, description, binaryFiles, System.currentTimeMillis());
|
||||
public ShelvedChangeList(final String path,
|
||||
final String description,
|
||||
final List<ShelvedBinaryFile> binaryFiles,
|
||||
@NotNull List<ShelvedChange> shelvedChanges) {
|
||||
this(path, description, binaryFiles, shelvedChanges, System.currentTimeMillis());
|
||||
}
|
||||
|
||||
public ShelvedChangeList(final String path, final String description, final List<ShelvedBinaryFile> binaryFiles, final long time) {
|
||||
ShelvedChangeList(final String path,
|
||||
final String description,
|
||||
final List<ShelvedBinaryFile> binaryFiles,
|
||||
@NotNull List<ShelvedChange> shelvedChanges,
|
||||
final long time) {
|
||||
PATH = FileUtil.toSystemIndependentName(path);
|
||||
DESCRIPTION = description;
|
||||
DATE = new Date(time);
|
||||
myBinaryFiles = binaryFiles;
|
||||
mySchemeName = DESCRIPTION;
|
||||
myChanges = shelvedChanges;
|
||||
}
|
||||
|
||||
public boolean isRecycled() {
|
||||
@@ -124,34 +134,52 @@ public class ShelvedChangeList implements JDOMExternalizable, ExternalizableSche
|
||||
return DESCRIPTION;
|
||||
}
|
||||
|
||||
public List<ShelvedChange> getChanges(Project project) {
|
||||
public void loadChangesIfNeeded(@NotNull Project project) {
|
||||
if (myChanges == null) {
|
||||
try {
|
||||
myChanges = new ArrayList<>();
|
||||
final List<? extends FilePatch> list = ShelveChangesManager.loadPatchesWithoutContent(project, PATH, null);
|
||||
for (FilePatch patch : list) {
|
||||
FileStatus status;
|
||||
if (patch.isNewFile()) {
|
||||
status = FileStatus.ADDED;
|
||||
}
|
||||
else if (patch.isDeletedFile()) {
|
||||
status = FileStatus.DELETED;
|
||||
}
|
||||
else {
|
||||
status = FileStatus.MODIFIED;
|
||||
}
|
||||
myChanges.add(new ShelvedChange(project, PATH, patch.getBeforeName(), patch.getAfterName(), status));
|
||||
}
|
||||
myChanges = createShelvedChangesFromFilePatches(project, PATH, list);
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.error("Failed to parse the file patch: [" + PATH + "]", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public List<ShelvedChange> getChanges() {
|
||||
return myChanges;
|
||||
}
|
||||
|
||||
public void clearLoadedChanges() {
|
||||
myChanges = null;
|
||||
@Deprecated
|
||||
public List<ShelvedChange> getChanges(Project project) {
|
||||
loadChangesIfNeeded(project);
|
||||
return getChanges();
|
||||
}
|
||||
|
||||
void setChanges(List<ShelvedChange> shelvedChanges) {
|
||||
myChanges = shelvedChanges;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static List<ShelvedChange> createShelvedChangesFromFilePatches(@NotNull Project project,
|
||||
@NotNull String patchPath,
|
||||
@NotNull Collection<? extends FilePatch> filePatches) {
|
||||
List<ShelvedChange> changes = new ArrayList<>();
|
||||
for (FilePatch patch : filePatches) {
|
||||
FileStatus status;
|
||||
if (patch.isNewFile()) {
|
||||
status = FileStatus.ADDED;
|
||||
}
|
||||
else if (patch.isDeletedFile()) {
|
||||
status = FileStatus.DELETED;
|
||||
}
|
||||
else {
|
||||
status = FileStatus.MODIFIED;
|
||||
}
|
||||
changes.add(new ShelvedChange(project, patchPath, patch.getBeforeName(), patch.getAfterName(), status));
|
||||
}
|
||||
return changes;
|
||||
}
|
||||
|
||||
public List<ShelvedBinaryFile> getBinaryFiles() {
|
||||
@@ -174,7 +202,7 @@ public class ShelvedChangeList implements JDOMExternalizable, ExternalizableSche
|
||||
}
|
||||
|
||||
public void markToDelete(boolean toDeleted) {
|
||||
myToDelete = toDeleted;
|
||||
myToDelete = toDeleted;
|
||||
}
|
||||
|
||||
public boolean isMarkedToDelete() {
|
||||
|
||||
+6
-4
@@ -82,6 +82,7 @@ import static com.intellij.util.ObjectUtils.assertNotNull;
|
||||
import static com.intellij.util.containers.ContainerUtil.*;
|
||||
import static com.intellij.util.containers.UtilKt.isEmpty;
|
||||
import static java.util.Comparator.comparing;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class ShelvedChangesViewManager implements Disposable {
|
||||
private static final Logger LOG = Logger.getInstance(ShelvedChangesViewManager.class);
|
||||
@@ -246,10 +247,12 @@ public class ShelvedChangesViewManager implements Disposable {
|
||||
createShelvedListsWithChangesNode(shelvedLists, createTagNode("Recently Deleted"));
|
||||
}
|
||||
|
||||
@CalledInBackground
|
||||
private void createShelvedListsWithChangesNode(@NotNull List<ShelvedChangeList> shelvedLists, @NotNull MutableTreeNode parentNode) {
|
||||
shelvedLists.forEach(changeList -> {
|
||||
List<ShelvedWrapper> shelvedChanges = new ArrayList<>();
|
||||
changeList.getChanges(myProject).stream().map(ShelvedWrapper::new).forEach(shelvedChanges::add);
|
||||
changeList.loadChangesIfNeeded(myProject);
|
||||
requireNonNull(changeList.getChanges()).stream().map(ShelvedWrapper::new).forEach(shelvedChanges::add);
|
||||
changeList.getBinaryFiles().stream().map(ShelvedWrapper::new).forEach(shelvedChanges::add);
|
||||
|
||||
shelvedChanges.sort(comparing(s -> s.getChange(myProject), CHANGE_COMPARATOR));
|
||||
@@ -542,9 +545,8 @@ public class ShelvedChangesViewManager implements Disposable {
|
||||
private List<ShelvedChange> getChangesNotInLists(@NotNull List<? extends ShelvedChangeList> listsToDelete,
|
||||
@NotNull List<? extends ShelvedChange> shelvedChanges) {
|
||||
List<ShelvedChange> result = new ArrayList<>(shelvedChanges);
|
||||
for (ShelvedChangeList list : listsToDelete) {
|
||||
result.removeAll(list.getChanges(myProject));
|
||||
}
|
||||
// all changes should be loaded because action performed from loaded shelf tab
|
||||
listsToDelete.stream().map(list -> requireNonNull(list.getChanges())).forEach(result::removeAll);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -44,6 +44,7 @@ import java.awt.event.KeyEvent;
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.intellij.openapi.vcs.changes.ChangeListUtil.getChangeListNameForUnshelve;
|
||||
import static com.intellij.openapi.vcs.changes.ChangeListUtil.getPredefinedChangeList;
|
||||
@@ -100,8 +101,8 @@ public class UnshelveWithDialogAction extends DumbAwareAction {
|
||||
chooser.getSelectedList());
|
||||
}
|
||||
|
||||
private static boolean hasNotAllSelectedChanges(@NotNull Project project, @NotNull ShelvedChangeList list, @Nullable Change[] changes) {
|
||||
return changes != null && (list.getChanges(project).size() + list.getBinaryFiles().size()) != changes.length;
|
||||
private static boolean hasNotAllSelectedChanges(@NotNull ShelvedChangeList list, @Nullable Change[] changes) {
|
||||
return changes != null && (Objects.requireNonNull(list.getChanges()).size() + list.getBinaryFiles().size()) != changes.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -118,7 +119,7 @@ public class UnshelveWithDialogAction extends DumbAwareAction {
|
||||
@Nullable Change[] preselectedChanges) {
|
||||
super(project, new UnshelvePatchDefaultExecutor(project, changeList), Collections.emptyList(), ApplyPatchMode.UNSHELVE, patchFile,
|
||||
null, getPredefinedChangeList(changeList, ChangeListManager.getInstance(project)), binaryShelvedPatches,
|
||||
hasNotAllSelectedChanges(project, changeList, preselectedChanges) ? newArrayList(preselectedChanges) : null,
|
||||
hasNotAllSelectedChanges(changeList, preselectedChanges) ? newArrayList(preselectedChanges) : null,
|
||||
getChangeListNameForUnshelve(changeList), true);
|
||||
setOKButtonText(VcsBundle.getString("unshelve.changes.action"));
|
||||
}
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class ShelveChangesManagerMigrationTest extends PlatformTestCase {
|
||||
throws IOException {
|
||||
for (ShelvedChangeList list : shelveChangesManager.getAllLists()) {
|
||||
File newPatchDir = new File(shelveChangesManager.getShelfResourcesDirectory(), list.getName());
|
||||
ShelvedChangeList migrated = shelveChangesManager.createChangelistCopy(list, newPatchDir);
|
||||
ShelvedChangeList migrated = shelveChangesManager.createChangelistCopyWithChanges(list, newPatchDir);
|
||||
shelveChangesManager.saveListAsScheme(migrated);
|
||||
shelveChangesManager.clearShelvedLists(Collections.singletonList(list), false);
|
||||
}
|
||||
|
||||
+4
-2
@@ -89,8 +89,9 @@ class ShelveChangesManagerTest : PlatformTestCase() {
|
||||
removeFilesFromShelf: Boolean = true) {
|
||||
myShelvedChangesManager.isRemoveFilesFromShelf = removeFilesFromShelf
|
||||
val shelvedChangeList = myShelvedChangesManager.shelvedChangeLists[0]
|
||||
shelvedChangeList.loadChangesIfNeeded(project)
|
||||
val originalDate = shelvedChangeList.DATE
|
||||
val changes = if (changesNum == 0) null else shelvedChangeList.getChanges(myProject).subList(0, changesNum)
|
||||
val changes = if (changesNum == 0) null else shelvedChangeList.changes!!.subList(0, changesNum)
|
||||
val binaries = if (changesNum == 0) null else shelvedChangeList.binaryFiles.subList(0, binariesNum)
|
||||
|
||||
myShelvedChangesManager.unshelveChangeList(shelvedChangeList, changes, binaries, null, false)
|
||||
@@ -108,7 +109,8 @@ class ShelveChangesManagerTest : PlatformTestCase() {
|
||||
expectedDeletedNum: Int,
|
||||
undoDeletion: Boolean = false) {
|
||||
val originalDate = shelvedChangeList.DATE
|
||||
val changes = if (changesNum == 0) emptyList<ShelvedChange>() else shelvedChangeList.getChanges(myProject).subList(0, changesNum)
|
||||
shelvedChangeList.loadChangesIfNeeded(project)
|
||||
val changes = if (changesNum == 0) emptyList<ShelvedChange>() else shelvedChangeList.changes!!.subList(0, changesNum)
|
||||
val binaries = if (changesNum == 0) emptyList<ShelvedBinaryFile>() else shelvedChangeList.binaryFiles.subList(0, binariesNum)
|
||||
|
||||
val shouldDeleteEntireList = changesNum == 0 && binariesNum == 0
|
||||
|
||||
Reference in New Issue
Block a user