Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-08-15 17:03:08 +0000
committerMichael Valenta2006-08-15 17:03:08 +0000
commitc09f343742d1fd8f7136a636498ed3b65fc41ad8 (patch)
tree5899c2c39cfd9e5a4315f9cb00f18c4143fdd0ab /bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources
parentb36b4a87880126313dad036f81dc70c4bc41ebd4 (diff)
downloadeclipse.platform.team-c09f343742d1fd8f7136a636498ed3b65fc41ad8.tar.gz
eclipse.platform.team-c09f343742d1fd8f7136a636498ed3b65fc41ad8.tar.xz
eclipse.platform.team-c09f343742d1fd8f7136a636498ed3b65fc41ad8.zip
Bug 148990 [Subscriber] Failure to update files that are removed from server using rm
Diffstat (limited to 'bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources')
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java40
1 files changed, 35 insertions, 5 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java
index c62d28e7a..aedc28300 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java
@@ -10,8 +10,7 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.core.resources;
-import java.util.ArrayList;
-import java.util.Date;
+import java.util.*;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -23,7 +22,7 @@ import org.eclipse.team.core.TeamException;
import org.eclipse.team.internal.ccvs.core.*;
import org.eclipse.team.internal.ccvs.core.client.*;
import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption;
-import org.eclipse.team.internal.ccvs.core.client.listeners.ICommandOutputListener;
+import org.eclipse.team.internal.ccvs.core.client.listeners.*;
import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
import org.eclipse.team.internal.ccvs.core.connection.CVSServerException;
import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
@@ -32,13 +31,14 @@ import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
/**
* This class can be used to fetch and cache file contents for remote files.
*/
-public class UpdateContentCachingService {
+public class UpdateContentCachingService implements IUpdateMessageListener {
private CVSRepositoryLocation repository;
private ICVSFolder remoteRoot;
private final CVSTag tag;
private final int depth;
private boolean fetchAbsentDirectories = true;
+ private ArrayList removed = new ArrayList();
public class SandboxUpdate extends Update {
@@ -228,7 +228,7 @@ public class UpdateContentCachingService {
Command.NO_GLOBAL_OPTIONS,
getLocalOptions(),
new String[] { Session.CURRENT_LOCAL_FOLDER },
- null,
+ new UpdateListener(this),
Policy.subMonitorFor(monitor, 90));
if (!status.isOK()) {
if (status.getCode() == CVSStatus.SERVER_ERROR) {
@@ -240,6 +240,11 @@ public class UpdateContentCachingService {
throw new CVSException(status);
}
}
+ for (Iterator iterator = removed.iterator(); iterator.hasNext();) {
+ ICVSResource resource = (ICVSResource) iterator.next();
+ if (resource.exists())
+ resource.delete();
+ }
} finally {
session.close();
monitor.done();
@@ -270,4 +275,29 @@ public class UpdateContentCachingService {
return Command.NO_LOCAL_OPTIONS;
}
+
+ public void directoryDoesNotExist(ICVSFolder commandRoot, String path) {
+ try {
+ removed.add(commandRoot.getChild(path));
+ } catch (CVSException e) {
+ CVSProviderPlugin.log(e);
+ }
+ }
+
+ public void directoryInformation(ICVSFolder commandRoot, String path,
+ boolean newDirectory) {
+ // Nothing to do
+ }
+
+ public void fileDoesNotExist(ICVSFolder parent, String filename) {
+ try {
+ removed.add(parent.getChild(filename));
+ } catch (CVSException e) {
+ CVSProviderPlugin.log(e);
+ }
+ }
+
+ public void fileInformation(int type, ICVSFolder parent, String filename) {
+ // Nothing to do
+ }
}

Back to the top