Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2007-09-11 18:59:18 +0000
committerMichael Valenta2007-09-11 18:59:18 +0000
commitee36a7ba26394b99ab3917f712c0b9d825add557 (patch)
tree5c55707cc28293fa470ae51388d0d3f03772d814
parent7dcdc820d03a9efce8fafc94cc83594aefac4f5c (diff)
downloadeclipse.platform.team-ee36a7ba26394b99ab3917f712c0b9d825add557.tar.gz
eclipse.platform.team-ee36a7ba26394b99ab3917f712c0b9d825add557.tar.xz
eclipse.platform.team-ee36a7ba26394b99ab3917f712c0b9d825add557.zip
Bug 189210 CVS's editor input should implement IURIEditorInput.
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filesystem/CVSFileStore.java25
-rw-r--r--bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java2
2 files changed, 27 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filesystem/CVSFileStore.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filesystem/CVSFileStore.java
index 0205b0e08..bed2e4437 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filesystem/CVSFileStore.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filesystem/CVSFileStore.java
@@ -20,8 +20,10 @@ import org.eclipse.core.filesystem.provider.FileStore;
import org.eclipse.core.resources.IStorage;
import org.eclipse.core.runtime.*;
import org.eclipse.team.core.TeamException;
+import org.eclipse.team.core.variants.CachedResourceVariant;
import org.eclipse.team.core.variants.IResourceVariant;
import org.eclipse.team.internal.ccvs.core.*;
+import org.eclipse.team.internal.ccvs.core.resources.RemoteFile;
public class CVSFileStore extends FileStore {
@@ -81,6 +83,11 @@ public class CVSFileStore extends FileStore {
public IFileInfo fetchInfo(int options, IProgressMonitor monitor) throws CoreException {
monitor = Policy.monitorFor(monitor);
+
+ if (isStickyRevision()) {
+ ICVSRemoteFile file = uri.toFile();
+ return getFileInfo(file, monitor);
+ }
ICVSRemoteFolder folder = uri.getParentFolder();
if (folder == null) {
@@ -102,6 +109,16 @@ public class CVSFileStore extends FileStore {
return getFileInfo(resource, monitor);
}
+ private boolean isStickyRevision() {
+ String revision = uri.getRevision();
+ CVSTag tag = uri.getTag();
+ if (revision == null)
+ return false;
+ if (tag == null)
+ return false;
+ return revision.equals(tag.getName());
+ }
+
private IFileInfo getFileInfo(ICVSResource resource, IProgressMonitor monitor) throws TeamException {
monitor = Policy.monitorFor(monitor);
if (resource == null)
@@ -111,6 +128,14 @@ public class CVSFileStore extends FileStore {
info.setName(resource.getName());
if (!resource.isFolder()) {
ICVSRemoteFile file = (ICVSRemoteFile) resource;
+ // Avoid a round trip by looking for the file in the cache
+ if (file instanceof RemoteFile) {
+ RemoteFile remote = (RemoteFile) file;
+ CachedResourceVariant variant = remote.getCachedHandle();
+ if (variant instanceof ICVSRemoteFile) {
+ file = (ICVSRemoteFile) variant;
+ }
+ }
ILogEntry entry = file.getLogEntry(monitor);
info.setLastModified(entry.getDate().getTime());
} else {
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
index 5c413569c..bd7062dbd 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
@@ -112,6 +112,8 @@ public class RemoteFile extends RemoteResource implements ICVSRemoteFile {
Assert.isNotNull(filePath);
Assert.isNotNull(location);
IPath path = new Path(null, filePath);
+ if (tag != null && revision != null && tag.getName().equals(revision))
+ tag = null;
RemoteFolder parent = new RemoteFolder(null /* parent */, location, path.removeLastSegments(1).toString(), tag /* tag */);
RemoteFile file = new RemoteFile(parent, Update.STATE_NONE, path.lastSegment(), revision /* revision */, null /* keyword mode */, tag /* tag */);
parent.setChildren(new ICVSRemoteResource[] {file});

Back to the top