Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2003-01-27 02:09:54 +0000
committerMichael Valenta2003-01-27 02:09:54 +0000
commit564b6d1cc1d2433910cae101de4a17280e8419e5 (patch)
tree6cea9c24b6ba737f44fa34d25b899849263047cf /bundles
parentd70a83a45e9a5439fb235c93ce8ae3b7d4b4871e (diff)
downloadeclipse.platform.team-564b6d1cc1d2433910cae101de4a17280e8419e5.tar.gz
eclipse.platform.team-564b6d1cc1d2433910cae101de4a17280e8419e5.tar.xz
eclipse.platform.team-564b6d1cc1d2433910cae101de4a17280e8419e5.zip
30199: Used to workDeleting CVS dirs causes serious problems
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java11
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java3
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java10
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java2
4 files changed, 22 insertions, 4 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java
index c2f72f1f0..1d8d33a95 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java
@@ -239,7 +239,7 @@ public class CVSTeamProvider extends RepositoryProvider {
// Auto-add parents if they are not already managed
IContainer parent = currentResource.getParent();
ICVSResource cvsParentResource = CVSWorkspaceRoot.getCVSResourceFor(parent);
- while (parent.getType() != IResource.ROOT && parent.getType() != IResource.PROJECT && ! cvsParentResource.isManaged()) {
+ while (parent.getType() != IResource.ROOT && parent.getType() != IResource.PROJECT && ! isManaged(cvsParentResource)) {
folders.add(cvsParentResource);
parent = parent.getParent();
cvsParentResource = cvsParentResource.getParent();
@@ -253,7 +253,7 @@ public class CVSTeamProvider extends RepositoryProvider {
ICVSResource mResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
// Add the resource is its not already managed and it was either
// added explicitly (is equal currentResource) or is not ignored
- if (! mResource.isManaged() && (currentResource.equals(resource) || ! mResource.isIgnored())) {
+ if (! isManaged(mResource) && (currentResource.equals(resource) || ! mResource.isIgnored())) {
if (resource.getType() == IResource.FILE) {
KSubstOption ksubst = KSubstOption.fromFile((IFile) resource);
Set set = (Set) files.get(ksubst);
@@ -325,6 +325,13 @@ public class CVSTeamProvider extends RepositoryProvider {
progress.done();
}
}
+
+ /*
+ * Consider a folder managed only if it's also a CVS folder
+ */
+ private boolean isManaged(ICVSResource cvsResource) throws CVSException {
+ return cvsResource.isManaged() && (!cvsResource.isFolder() || ((ICVSFolder)cvsResource).isCVSFolder());
+ }
/**
* Checkin any local changes using "cvs commit ...".
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java
index 0ea74a15f..07486dfef 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java
@@ -146,6 +146,9 @@ public abstract class Request {
argument = getServerErrorMessage();
} else {
argument = Policy.bind("Command.seriousServerError", argument); //$NON-NLS-1$
+ if (!accumulatedStatus.isEmpty()) {
+ accumulatedStatus.add(new CVSStatus(CVSStatus.ERROR, CVSStatus.SERVER_ERROR, argument));
+ }
serious = true;
}
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java
index 7352de337..5c12b635e 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java
@@ -236,11 +236,19 @@ public class Session {
} else {
root = resource.getParent();
}
+ // go to the top of the management chain
while (root.isManaged()) {
root = root.getParent();
}
// Look for the root in the current open sessions
- return (Session)currentOpenSessions.get(root);
+ Session session;
+ do {
+ session = (Session)currentOpenSessions.get(root);
+ if (session != null) return session;
+ // we should have found it the first time but continue up the chain
+ root = root.getParent();
+ } while (root != null);
+ return null;
}
/**
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java
index bb507961c..5f6f54656 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java
@@ -171,7 +171,7 @@ public class SyncFileChangeListener implements IResourceChangeListener {
return resource.getType() == IResource.FILE &&
parent!=null &&
parent.getName().equals(SyncFileWriter.CVS_DIRNAME) &&
- parent.isTeamPrivateMember();
+ (parent.isTeamPrivateMember() || !parent.exists());
}
/*

Back to the top