[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[Subclipse-users] Branch merge issues

From: Stephen Colebourne <scolebourne_at_joda.org>
Date: Fri, 22 May 2009 09:51:08 -0700 (PDT)

Hi,
I've been trying to use Subclipse to merge files and folders without success for a few hours now. I thought I'd write and discuss my difficulties - Subclipse 1.6.2, Java HL 1.6.2 (rv37639), svn repository 1.5.

My basic goal is to merge changes from TRUNK to a branch. I am in the branch workspace, and do a team/merge.

My first issue is the complexity of the dialog box. Subclipse makes no effort to understand that the head of TRUNK and the head of the branch are the elements that are important. Instead, each time I go to the dialog I have to select the TRUNK URI at the top, then select the head revision, then unselect the From checkbox, then select the branch URI, and then select the head of the branch. This is a very slow UI, and doesn't map to the meaningful operations in a business scenario.

My second issue is that the merge is immediate. With CVS, performing a merge will provide a dialog that allows the user to pick and choose which files to merge back. I can find no equivalent to this in Subclipse.

My third issue is that the merge completes with lots of .prej files, one for every file that has two different revisions (one revision on TRUNK and one on the branch). This is because the repository was just converted from CVS, and the cvs-rev svn property is different between TRUNK and the Branch. I can find no way to ignore this property during the merge process, and it effectively makes merging useless.

My fourth issue is that I have NPE from the completed merge when I attempt to synchronize and then double click to compare the changes. This originally occurred on every attempt to view the file in the compare view, now it doesn't. I don't know what has changed.

ENTRY org.eclipse.jface 4 2 2009-05-22 16:41:32.075
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NullPointerException
        at org.tigris.subversion.subclipse.core.resources.RemoteResource.equals(RemoteResource.java:154)
        at org.tigris.subversion.subclipse.core.resources.RemoteFile.equals(RemoteFile.java:155)
        at org.eclipse.team.core.synchronize.SyncInfo.equalObjects(SyncInfo.java:327)
        at org.eclipse.team.core.synchronize.SyncInfo.equalNodes(SyncInfo.java:319)
        at org.eclipse.team.core.synchronize.SyncInfo.equals(SyncInfo.java:277)
        at org.eclipse.team.ui.synchronize.SyncInfoCompareInput.equals(SyncInfoCompareInput.java:208)
        at org.eclipse.ui.internal.EditorHistoryItem.matches(EditorHistoryItem.java:114)
        at org.eclipse.ui.internal.EditorHistory.remove(EditorHistory.java:118)
        at org.eclipse.ui.internal.EditorHistory.add(EditorHistory.java:61)
        at org.eclipse.ui.internal.EditorHistory.add(EditorHistory.java:51)
        at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:682)
        at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:639)
        at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2817)
        at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2729)
        at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2721)
        at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2673)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2652)
        at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2635)
        at org.eclipse.compare.internal.CompareUIPlugin$1.run(CompareUIPlugin.java:454)
        at org.eclipse.compare.internal.CompareUIPlugin.syncExec(CompareUIPlugin.java:1171)
        at org.eclipse.compare.internal.CompareUIPlugin.internalOpenEditor(CompareUIPlugin.java:465)
        at org.eclipse.compare.internal.CompareUIPlugin.openEditorInBackground(CompareUIPlugin.java:436)
        at org.eclipse.compare.internal.CompareUIPlugin.openCompareEditor(CompareUIPlugin.java:426)
        at org.eclipse.compare.CompareUI.openCompareEditorOnPage(CompareUI.java:135)
        at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditor(OpenInCompareAction.java:210)
        at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditor(OpenInCompareAction.java:169)
        at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditorOnSyncInfo(OpenInCompareAction.java:149)
        at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.run(OpenInCompareAction.java:62)
        at org.eclipse.team.internal.ui.synchronize.actions.OpenWithActionGroup.openInCompareEditor(OpenWithActionGroup.java:142)
        at org.eclipse.team.internal.ui.synchronize.actions.DefaultSynchronizePageActions$1.run(DefaultSynchronizePageActions.java:47)
        at org.eclipse.team.internal.ui.synchronize.StructuredViewerAdvisor.handleOpen(StructuredViewerAdvisor.java:171)
        at org.eclipse.team.internal.ui.synchronize.StructuredViewerAdvisor.access$0(StructuredViewerAdvisor.java:167)
        at org.eclipse.team.internal.ui.synchronize.StructuredViewerAdvisor$3.open(StructuredViewerAdvisor.java:131)
        at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:820)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at org.eclipse.core.runtime.Platform.run(Platform.java:880)
        at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
        at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
        at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:818)
        at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1079)
        at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1183)
        at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:263)
        at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:257)
        at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:297)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2384)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        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:549)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1236)

!ENTRY org.eclipse.core.jobs 4 2 2009-05-22 16:41:32.416
!MESSAGE An internal error occurred during: "Initializing Compare Editor".
!STACK 0
java.lang.NullPointerException
        at org.tigris.subversion.subclipse.core.resources.RemoteResource.getCachePath(RemoteResource.java:228)
        at org.eclipse.team.core.variants.CachedResourceVariant.isHandleCached(CachedResourceVariant.java:189)
        at org.eclipse.team.core.variants.CachedResourceVariant.isContentsCached(CachedResourceVariant.java:156)
        at org.eclipse.team.core.variants.CachedResourceVariant.ensureContentsCached(CachedResourceVariant.java:110)
        at org.eclipse.team.core.variants.CachedResourceVariant.getStorage(CachedResourceVariant.java:101)
        at org.eclipse.team.internal.ui.synchronize.RemoteResourceTypedElement.fetchContents(RemoteResourceTypedElement.java:63)
        at org.eclipse.team.internal.ui.StorageTypedElement.cacheContents(StorageTypedElement.java:53)
        at org.eclipse.team.internal.ui.synchronize.SyncInfoModelElement.cacheContents(SyncInfoModelElement.java:185)
        at org.eclipse.team.ui.synchronize.AbstractSynchronizeParticipant.prepareCompareInput(AbstractSynchronizeParticipant.java:326)
        at org.eclipse.team.ui.synchronize.SyncInfoCompareInput.prepareCompareInput(SyncInfoCompareInput.java:175)
        at org.eclipse.team.ui.synchronize.SaveableCompareEditorInput.prepareInput(SaveableCompareEditorInput.java:239)
        at org.eclipse.compare.CompareEditorInput.run(CompareEditorInput.java:448)
        at org.eclipse.compare.internal.CompareUIPlugin.prepareInput(CompareUIPlugin.java:484)
        at org.eclipse.compare.internal.CompareEditor$2.run(CompareEditor.java:314)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

My fifth issue is with attempting to use the alternative Compare With option to bring files from TRUNK to the Branch. That seems to work fine so long as there are no new folders. However, my change includes new folders, and although this shows up in the compare view, it cannot be actioned, so there is no way to use that view to pull the changes across (as there is in CVS).

Furthermore, there is no simple, one-click, menu item to compare with the head of TRUNK as there is in CVS. The lack of such basic business led operations as this leads me to question how the authors are managing to use the tool.

Any suggestions to allow me to perform this simple task (merge selected files from TRUNK to branch) are welcome, although I'm not holding out much hope of ever being able to use subversion from Eclipse in a meaningful way right now.

------------------------------------------------------
http://subclipse.tigris.org/ds/viewMessage.do?dsForumId=1047&dsMessageId=2352956

To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subclipse.tigris.org].
Received on 2009-05-22 20:19:34 CEST

This is an archived mail posted to the Subclipse Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.