diff options
author | Michael Valenta | 2003-01-27 02:09:54 +0000 |
---|---|---|
committer | Michael Valenta | 2003-01-27 02:09:54 +0000 |
commit | 564b6d1cc1d2433910cae101de4a17280e8419e5 (patch) | |
tree | 6cea9c24b6ba737f44fa34d25b899849263047cf /bundles | |
parent | d70a83a45e9a5439fb235c93ce8ae3b7d4b4871e (diff) | |
download | eclipse.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')
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()); } /* |