Community
Participate
Working Groups
I don't have access to the root directory of the subversion server a project I'm working on is using. If the full URL to the project is http://server.com/svn/foo. I have access to foo, but not the subversion root. Subversive wants to connect to the root when I try to browse the branches and opens up an authentication dialog each time (which I'm forced to cancel). Is there any way to disable this? Thanks, Jay
Subversive tries to connect to SVN server even when that's unnecessary - for example, when it initializes popup menu for a project. That slows things down and can even completely freeze Eclipse when network becomes inaccessible. See this stack trace, for example. It was obtained with jstack tool from completely frozen Eclipse instance: ------------------------------- "SVN-Y9QS0" prio=6 tid=0x00985400 nid=0xee4 runnable [0x0012d000..0x0012fc54] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) - locked <0x108a91a8> (a java.net.SocksSocketImpl) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at org.tmatesoft.svn.core.internal.util.SVNSocketFactory.createPlainSocket(SVNSocketFactory.java:54) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.connect(HTTPConnection.java:146) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:272) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:235) at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:223) at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doPropfind(DAVConnection.java:97) at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getProperties(DAVUtil.java:57) at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getResourceProperties(DAVUtil.java:62) at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getStartingProperties(DAVUtil.java:92) at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.findStartingProperties(DAVUtil.java:113) at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getBaselineProperties(DAVUtil.java:197) at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getBaselineInfo(DAVUtil.java:160) at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:150) at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:348) at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:462) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:418) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:382) at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:1973) at org.tmatesoft.svn.core.javahl.SVNClientImpl.info2(SVNClientImpl.java:1205) at org.polarion.team.svn.connector.svnkit.SVNKitConnector.info(SVNKitConnector.java:710) at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.info(ThreadNameModifier.java:675) at org.eclipse.team.svn.core.utility.SVNUtility.info(SVNUtility.java:288) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation$2.runImpl(SVNRepositoryLocation.java:570) at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:72) at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:103) at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:89) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation.fetchRepoInfo(SVNRepositoryLocation.java:550) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation.fetchRepoInfo(SVNRepositoryLocation.java:542) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation.getRepositoryRootUrl(SVNRepositoryLocation.java:154) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation.isArgumentsCorrect(SVNRepositoryLocation.java:525) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation.asRepositoryContainer(SVNRepositoryLocation.java:223) at org.eclipse.team.svn.core.svnstorage.SVNRepositoryLocation.asRepositoryContainer(SVNRepositoryLocation.java:215) at org.eclipse.team.svn.core.SVNTeamProvider.uploadRepositoryResource(SVNTeamProvider.java:243) at org.eclipse.team.svn.core.SVNTeamProvider.connectToProject(SVNTeamProvider.java:169) - locked <0x30e8a1b8> (a java.lang.Class for org.eclipse.team.svn.core.SVNTeamProvider) at org.eclipse.team.svn.core.SVNTeamProvider.getRepositoryResource(SVNTeamProvider.java:70) - locked <0x1514f7c0> (a org.eclipse.team.svn.core.SVNTeamProvider) at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.loadLocalResourcesSubTreeSVNImpl(SVNRemoteStorage.java:595) at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.loadLocalResourcesSubTree(SVNRemoteStorage.java:479) at org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage.asLocalResource(SVNRemoteStorage.java:283) - locked <0x14d809a0> (a org.eclipse.team.svn.core.svnstorage.SVNRemoteStorage) at org.eclipse.team.svn.core.utility.FileUtility.checkForResourcesPresence(FileUtility.java:328) at org.eclipse.team.svn.ui.action.FilterManager.checkForResourcesPresence(FilterManager.java:105) at org.eclipse.team.svn.ui.action.FilterManager.checkForResourcesPresenceRecursive(FilterManager.java:68) at org.eclipse.team.svn.ui.action.AbstractLocalTeamAction.checkForResourcesPresenceRecursive(AbstractLocalTeamAction.java:58) at org.eclipse.team.svn.ui.action.local.EditConflictsAction.isEnabled(EditConflictsAction.java:34) at org.eclipse.team.internal.ui.actions.TeamAction.setActionEnablement(TeamAction.java:284) at org.eclipse.team.internal.ui.actions.TeamAction.selectionChanged(TeamAction.java:269) at org.eclipse.team.svn.ui.action.AbstractSVNTeamAction.selectionChanged(AbstractSVNTeamAction.java:103) at org.eclipse.ui.internal.PluginAction.refreshEnablement(PluginAction.java:211) at org.eclipse.ui.internal.PluginAction.selectionChanged(PluginAction.java:282) at org.eclipse.ui.internal.ObjectActionContributor$1.run(ObjectActionContributor.java:156) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.ui.internal.ObjectActionContributor.contributeObjectActions(ObjectActionContributor.java:159) at org.eclipse.ui.internal.ObjectActionContributorManager.contributeObjectActions(ObjectActionContributorManager.java:96) at org.eclipse.ui.internal.PopupMenuExtender.addObjectActions(PopupMenuExtender.java:261) at org.eclipse.ui.internal.PopupMenuExtender.menuAboutToShow(PopupMenuExtender.java:337) at org.eclipse.jface.action.MenuManager.fireAboutToShow(MenuManager.java:290) at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:395) at org.eclipse.jface.action.MenuManager.access$1(MenuManager.java:391) at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:417) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:943) at org.eclipse.swt.widgets.Control.WM_INITMENUPOPUP(Control.java:3981) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3698) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:291) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1554) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1753) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4351) at org.eclipse.swt.internal.win32.OS.TrackPopupMenu(Native Method) at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:228) at org.eclipse.swt.widgets.Display.runPopups(Display.java:3708) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3287) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
<Report and stack trace are copied from newsgroup. Reported by Pavel Zuev>
Fix will be available in the next Subversive build at the end of this week. Remarks: 1) Repository root will be accessed when plug-in operates with URLs shorter than URL specified in repository location. 2) Due to issue in previous versions of Subversive repository root URL is not saved in already registered locations. So, once per session, when root URL is accessed, plug-in can connect to remote host. (Workaround for this problem consists in modification and then saving corresponding repository location).