*** empty log message ***
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java
index c544892..d940676 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSProviderPlugin.java
@@ -39,11 +39,13 @@
 import org.eclipse.core.runtime.IPluginDescriptor;
 import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.core.runtime.QualifiedName;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
 import org.eclipse.core.settings.IMemento;
 import org.eclipse.team.core.RepositoryProvider;
 import org.eclipse.team.core.Team;
@@ -989,4 +991,29 @@
 	public IPath getSettingsLocation() {
 		return getStateLocation().append("settings");
 	}
+	
+	public SettingsStore getProjectSettings(IProject project) throws CoreException {
+		QualifiedName settingsPropertyName = new QualifiedName(ID, "settings");
+		Object cached = project.getSessionProperty(settingsPropertyName);
+		if (cached instanceof SettingsStore) {
+			return (SettingsStore)cached;
+		}
+		try {
+			final SettingsStore store = new SettingsStore(project.getFolder(new Path(".settings").append(ID)).getLocation().toFile());
+			store.load();
+			project.setSessionProperty(settingsPropertyName, store);
+			store.addPropertyChangeListener(new Preferences.IPropertyChangeListener() {
+				public void propertyChange(PropertyChangeEvent event) {
+					try {
+						store.store(ID);
+					} catch (IOException e) {
+						log(IStatus.ERROR, "Error storing plugin settings", e);
+					}
+				}
+			});
+			return store;
+		} catch (IOException e) {
+			throw new CoreException(new Status(IStatus.ERROR, ID, 0, "Error loading plugin settings", e));
+		}
+	}
 }