This commit is contained in:
Roman Shevchenko
2011-05-20 15:06:36 +04:00
parent 521916e3bc
commit 6547e5565c
2 changed files with 27 additions and 30 deletions
@@ -30,6 +30,7 @@ import com.intellij.openapi.vcs.rollback.RollbackEnvironment;
import com.intellij.openapi.vcs.update.RefreshVFsSynchronously;
import com.intellij.util.WaitForProgressToShow;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.ArrayList;
@@ -40,16 +41,16 @@ public class RollbackWorker {
private final Project myProject;
private final List<VcsException> myExceptions;
private ProgressIndicator myIndicator;
public RollbackWorker(final Project project, final boolean synchronous) {
public RollbackWorker(final Project project, final boolean synchronous/*todo[irengrig] and what?*/) {
myProject = project;
myExceptions = new ArrayList<VcsException>(0);
}
public void doRollback(final Collection<Change> changes, final boolean deleteLocallyAddedFiles, final Runnable afterVcsRefreshInAwt,
final String localHistoryActionName) {
final ChangeListManager changeListManager = ChangeListManagerImpl.getInstance(myProject);
public void doRollback(final Collection<Change> changes,
final boolean deleteLocallyAddedFiles,
@Nullable final Runnable afterVcsRefreshInAwt,
@Nullable final String localHistoryActionName) {
final ChangeListManager changeListManager = ChangeListManager.getInstance(myProject);
final Runnable notifier = changeListManager.prepareForChangeDeletion(changes);
final Runnable afterRefresh = new Runnable() {
public void run() {
@@ -93,6 +94,7 @@ public class RollbackWorker {
private final boolean myDeleteLocallyAddedFiles;
private final Runnable myAfterRefresh;
private final String myLocalHistoryActionName;
private ProgressIndicator myIndicator;
private MyRollbackRunnable(final Collection<Change> changes,
final boolean deleteLocallyAddedFiles,
@@ -170,17 +172,20 @@ public class RollbackWorker {
actionName : myLocalHistoryActionName, -1);
final VcsDirtyScopeManager manager = PeriodicalTasksCloser.getInstance().safeGetComponent(project, VcsDirtyScopeManager.class);
for (Change change : changesToRefresh) {
if ((! change.isIsReplaced()) && Comparing.equal(change.getBeforeRevision(), change.getAfterRevision())) {
manager.fileDirty(change.getBeforeRevision().getFile());
} else {
if (change.getBeforeRevision() != null) {
final FilePath parent = change.getBeforeRevision().getFile().getParentPath();
final ContentRevision beforeRevision = change.getBeforeRevision();
final ContentRevision afterRevision = change.getAfterRevision();
if ((!change.isIsReplaced()) && beforeRevision != null && Comparing.equal(beforeRevision, afterRevision)) {
manager.fileDirty(beforeRevision.getFile());
}
else {
if (beforeRevision != null) {
final FilePath parent = beforeRevision.getFile().getParentPath();
if (parent != null) {
manager.dirDirtyRecursively(parent);
}
}
if (change.getAfterRevision() != null) {
final FilePath parent = change.getAfterRevision().getFile().getParentPath();
if (afterRevision != null) {
final FilePath parent = afterRevision.getFile().getParentPath();
if (parent != null) {
manager.dirDirtyRecursively(parent);
}
@@ -221,5 +226,4 @@ public class RollbackWorker {
}
}
}
}
@@ -60,32 +60,25 @@ public class SvnChangesCorrectlyRefreshedTest extends SvnTestCase {
}
}
private void sleep1000() {
private static void sleep300() {
try {
Thread.sleep(300);
}
catch (InterruptedException e) {
//
}
catch (InterruptedException ignore) { }
}
@Test
public void testModificationAndAfterRevert() throws Throwable {
final SubTree subTree = new SubTree(myWorkingCopyDir);
checkin();
try {
Thread.sleep(300);
}
catch (InterruptedException e) {
//
}
sleep300();
editFileInCommand(myProject, subTree.myS1File, "new");
final CharSequence text1 = LoadTextUtil.loadText(subTree.myS1File);
Assert.assertEquals("new", text1.toString());
sleep1000();
sleep300();
LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(subTree.myS1File.getPath()));
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
clManager.ensureUpToDate(false);
@@ -120,7 +113,7 @@ public class SvnChangesCorrectlyRefreshedTest extends SvnTestCase {
assertVF(subTree.mySourceDir, newName);
sleep1000();
sleep300();
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
clManager.ensureUpToDate(false);
DuringChangeListManagerUpdateTestScheme.checkFilesAreInList(new VirtualFile[] {subTree.myS1File}, clManager.getDefaultListName(), clManager);
@@ -145,7 +138,7 @@ public class SvnChangesCorrectlyRefreshedTest extends SvnTestCase {
assertVF(subTree.myTargetDir, "s1.txt");
sleep1000();
sleep300();
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
clManager.ensureUpToDate(false);
DuringChangeListManagerUpdateTestScheme.checkFilesAreInList(new VirtualFile[] {subTree.myS1File}, clManager.getDefaultListName(), clManager);
@@ -173,7 +166,7 @@ public class SvnChangesCorrectlyRefreshedTest extends SvnTestCase {
assertVF(subTree.mySourceDir, "s1.txt");
assertVF(subTree.mySourceDir, "s2.txt");
sleep1000();
sleep300();
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
clManager.ensureUpToDate(false);
DuringChangeListManagerUpdateTestScheme.checkFilesAreInList(new VirtualFile[] {subTree.mySourceDir, subTree.myS1File, subTree.myS2File},
@@ -206,7 +199,7 @@ public class SvnChangesCorrectlyRefreshedTest extends SvnTestCase {
final CharSequence text1 = LoadTextUtil.loadText(subTree.myS1File);
Assert.assertEquals("new", text1.toString());
sleep1000();
sleep300();
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
clManager.ensureUpToDate(false);
DuringChangeListManagerUpdateTestScheme.checkFilesAreInList(new VirtualFile[] {subTree.mySourceDir, subTree.myS1File, subTree.myS2File},
@@ -269,7 +262,7 @@ public class SvnChangesCorrectlyRefreshedTest extends SvnTestCase {
checkin();
deleteFileInCommand(subTree.myRootDir);
sleep1000();
sleep300();
VcsDirtyScopeManager.getInstance(myProject).markEverythingDirty();
clManager.ensureUpToDate(false);