Re: brockj and pkorros for committers
From: Brock Janiczak <brockj_eclipse_at_ihug.com.au>
Date: 2004-07-13 09:39:23 CEST
Don't worry, there is always room for more profiling :)
This solution is only temporary, as it will do a recursive status update
Does anyone know of a good (free) profiler? If not i can always use
Index:
--- d:/data/eclipse/workspace/core/src/org/tigris/subversion/subclipse/core/resources/LocalResourceStatusCache.java (revision 742) +++ d:/data/eclipse/workspace/core/src/org/tigris/subversion/subclipse/core/resources/LocalResourceStatusCache.java (working copy) @@ -96,6 +96,52 @@ return (IResource[])resourcesSet.toArray(new IResource[resourcesSet.size()]); } + private static void recursiveUpdateStatus(IResource resource) throws SVNException { + IWorkspace workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRoot workspaceRoot = workspace.getRoot(); + + // don't do getRepository().getSVNClient() as we can ask the status of a file + // that is not associated with a known repository + // we don't need login & password so this is not a problem + ISVNStatus[] statuses = null; + try { + ISVNClientAdapter svnClientAdapterStatus = SVNProviderPlugin.getPlugin().createSVNClient(); + statuses = svnClientAdapterStatus.getStatus(resource.getLocation().toFile(),true, true); + } catch (SVNClientException e1) { + throw SVNException.wrapException(e1); + } + + for (int i = 0; i < statuses.length;i++) { + ISVNStatus status = statuses[i]; + IPath pathEclipse = null; + File file = status.getFile(); + try { + String canonicalPath = file.getCanonicalPath(); + pathEclipse = new Path(canonicalPath); + } catch (IOException e) { + // should never occur ... + } + + IResource resourceStatus = null; + if (file.isDirectory()) { + resourceStatus = workspaceRoot.getContainerForLocation(pathEclipse); + } + else + if (file.isFile()) { + resourceStatus = workspaceRoot.getFileForLocation(pathEclipse); + } + + if (resourceStatus != null) { + try { + resourceStatus.setSessionProperty(RESOURCE_SYNC_KEY, status); + } catch (CoreException e) { + // can't set the property (because the resource does not exist + // for example) + } + } + } + } + /** * update the status of resource and near resources that also need to be updated * @param resource @@ -171,7 +215,8 @@ if (status == null) { - updateStatusSet(resource); +// updateStatusSet(resource); + recursiveUpdateStatus(resource); try { status = (ISVNStatus) resource.getSessionProperty(RESOURCE_SYNC_KEY); Panayiotis Korros wrote: >Brock, you are so quick... I wanted to profile the decorators myself but you >did it first! >Good work! > >By the way revision 743 is Brock's work not mine. Can someone fix it? > >Received on Tue Jul 13 17:39:23 2004 |
This is an archived mail posted to the Subclipse Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.