Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/operations/BranchTagOperation.java =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/operations/BranchTagOperation.java (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/operations/BranchTagOperation.java (working copy) @@ -12,11 +12,14 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.team.core.TeamException; import org.eclipse.ui.IWorkbenchPart; import org.tigris.subversion.subclipse.core.ISVNLocalResource; import org.tigris.subversion.subclipse.core.SVNException; import org.tigris.subversion.subclipse.core.SVNTeamProvider; import org.tigris.subversion.subclipse.core.commands.BranchTagCommand; +import org.tigris.subversion.subclipse.core.commands.GetRemoteResourceCommand; +import org.tigris.subversion.subclipse.core.commands.SwitchToUrlCommand; import org.tigris.subversion.subclipse.core.history.Alias; import org.tigris.subversion.subclipse.core.history.AliasManager; import org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot; @@ -31,6 +34,7 @@ private boolean createOnServer; private String message; private Alias newAlias; + private boolean switchAfterTagBranch; public BranchTagOperation(IWorkbenchPart part, IResource[] resources, SVNUrl sourceUrl, SVNUrl destinationUrl, boolean createOnServer, SVNRevision revision, String message) { super(part, resources); @@ -55,6 +59,26 @@ BranchTagCommand command = new BranchTagCommand(provider.getSVNWorkspaceRoot(),resources[0], sourceUrl, destinationUrl, message, createOnServer, revision); command.run(Policy.subMonitorFor(monitor,1000)); if (newAlias != null) updateBranchTagProperty(resources[0]); + if(switchAfterTagBranch) { + String lastPathSegment = sourceUrl.getLastPathSegment(); + SVNUrl switchDestinationUrl = destinationUrl.appendPath(lastPathSegment); + + // the copy command's destination URL can either be a path to an existing directory + // or a path to a new directory. In the former case the last path segment of the + // source path is automatically created at the destination + GetRemoteResourceCommand getRemoteResourceCommand = new GetRemoteResourceCommand(provider.getSVNWorkspaceRoot().getRepository(), switchDestinationUrl, SVNRevision.HEAD); + try { + getRemoteResourceCommand.run(null); + } catch(SVNException e) { + if(e.getStatus().getCode() == TeamException.UNABLE) { + switchDestinationUrl = destinationUrl; + } else { + throw e; + } + } + SwitchToUrlCommand switchToUrlCommand = new SwitchToUrlCommand(provider.getSVNWorkspaceRoot(), resources[0], switchDestinationUrl, SVNRevision.HEAD); + switchToUrlCommand.run(Policy.subMonitorFor(monitor,100)); + } } catch (SVNException e) { collectStatus(e.getStatus()); } finally { @@ -100,5 +124,9 @@ public void setNewAlias(Alias newAlias) { this.newAlias = newAlias; } + + public void switchAfterTagBranchOperation(boolean switchAfterTagBranchOperation) { + this.switchAfterTagBranch = switchAfterTagBranchOperation; + } } Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_zh.properties =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_zh.properties (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_zh.properties (working copy) @@ -94,7 +94,6 @@ BranchTagDialog.enterComment = \u8F93\u5165\u5206\u652F\uFF0F\u6807\u8BB0\u7684\u6CE8\u91CA(&C)\uFF1A BranchTagDialog.fromUrl = \u4ECE URL\uFF1A BranchTagDialog.head = HEAD \u4FEE\u8BA2\u7248 -BranchTagDialog.note = \u6CE8\u610F\uFF1A\u60A8\u7684\u5DE5\u4F5C\u590D\u672C\u4F1A\u4FDD\u6301\u4E3A\u4EE5\u524D\u7684\u76EE\u5F55\u3002\u5982\u679C\u60A8\u60F3\u5C06\u4EE5\u540E\u7684\u66F4\u6539\u63D0\u4EA4\u5230\u5C06\u8981\u521B\u5EFA\u7684\u590D\u672C\u76EE\u5F55\uFF0C\u90A3\u4E48\u5FC5\u987B\u5207\u6362\u5230\u8BE5\u590D\u672C\u7684\u76EE\u5F55\u3002\u4F7F\u7528\u201C\u5207\u6362\u201D\u64CD\u4F5C\u53EF\u4EE5\u8FBE\u5230\u6B64\u76EE\u7684\u3002 BranchTagDialog.repository = \u8D44\u6E90\u5E93 BranchTagDialog.revision = \u6307\u5B9A\u8D44\u6E90\u5E93\u4E2D\u7684\u4FEE\u8BA2\u7248 BranchTagDialog.server = \u7ACB\u5373\u521B\u5EFA\u5206\u652F\uFF0F\u6807\u8BB0\u5230\u670D\u52A1\u5668 Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_ja.properties =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_ja.properties (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_ja.properties (working copy) @@ -88,19 +88,19 @@ BranchTagAction.branch = \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u306E\u8FFD\u52A0\u4E2D\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 -BranchTagDialog.0 = {0}\u306F\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3068\u306B\u304B\u304F\u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u3092\u30B3\u30D4\u30FC\u3057\u307E\u3059\u304B? -BranchTagDialog.createCopy = \u6B21\u306E\u5834\u6240\u304B\u3089\u30EA\u30DD\u30B8\u30C8\u30EA\u3078\u30B3\u30D4\u30FC\u3092\u4F5C\u6210: -BranchTagDialog.enterComment = \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u30B3\u30E1\u30F3\u30C8\u306E\u7DE8\u96C6(&c): -BranchTagDialog.fromUrl = \u30B3\u30D4\u30FC\u5143\u306EURL: -BranchTagDialog.head = \u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u306EHEAD\u30EA\u30D3\u30B8\u30E7\u30F3 -BranchTagDialog.note = \u6CE8\u610F: \u4F5C\u696D\u30B3\u30D4\u30FC\u306B\u4EE5\u524D\u306E\u30D1\u30B9\u304C\u6B8B\u3063\u3066\u3044\u307E\u3059\u3002\u4ECA\u5F8C\u306E\u5909\u66F4\u3092\u4ECA\u4F5C\u6210\u3057\u305F\u30B3\u30D4\u30FC\u306B\u53CD\u6620\u3055\u305B\u305F\u3044\u5834\u5408\u306F\u3001\u305D\u306E\u30B3\u30D4\u30FC\u306E\u30D1\u30B9\u3078\u79FB\u52D5\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u306E\u3067\u3001\u5207\u308A\u66FF\u3048\u64CD\u4F5C\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002 -BranchTagDialog.repository = \u30EA\u30DD\u30B8\u30C8\u30EA\u30FC -BranchTagDialog.revision = \u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u5185\u306E\u30EA\u30D3\u30B8\u30E7\u30F3\u3092\u9078\u629E -BranchTagDialog.server = \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u3092\u30B5\u30FC\u30D0\u30FC\u4E0A\u306B\u76F4\u63A5\u4F5C\u6210 -BranchTagDialog.title = \u30B3\u30D4\u30FC (\u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0) -BranchTagDialog.toUrl = \u30B3\u30D4\u30FC\u5148\u306EURL: -BranchTagDialog.url = \u30B3\u30D4\u30FC\u5143\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306EURL: -BranchTagDialog.working = \u4F5C\u696D\u30B3\u30D4\u30FC +BranchTagDialog.0 = {0}\u306F\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3068\u306B\u304B\u304F\u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u3092\u30B3\u30D4\u30FC\u3057\u307E\u3059\u304B? +BranchTagDialog.createCopy = \u6B21\u306E\u5834\u6240\u304B\u3089\u30EA\u30DD\u30B8\u30C8\u30EA\u3078\u30B3\u30D4\u30FC\u3092\u4F5C\u6210: +BranchTagDialog.enterComment = \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u30B3\u30E1\u30F3\u30C8\u306E\u7DE8\u96C6(&c): +BranchTagDialog.fromUrl = \u30B3\u30D4\u30FC\u5143\u306EURL: +BranchTagDialog.head = \u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u306EHEAD\u30EA\u30D3\u30B8\u30E7\u30F3 +BranchTagDialog.repository = \u30EA\u30DD\u30B8\u30C8\u30EA\u30FC +BranchTagDialog.revision = \u30EA\u30DD\u30B8\u30C8\u30EA\u30FC\u5185\u306E\u30EA\u30D3\u30B8\u30E7\u30F3\u3092\u9078\u629E +BranchTagDialog.server = \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u3092\u30B5\u30FC\u30D0\u30FC\u4E0A\u306B\u76F4\u63A5\u4F5C\u6210 +BranchTagDialog.switchAfterTagBranch = +BranchTagDialog.title = \u30B3\u30D4\u30FC (\u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0) +BranchTagDialog.toUrl = \u30B3\u30D4\u30FC\u5148\u306EURL: +BranchTagDialog.url = \u30B3\u30D4\u30FC\u5143\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306EURL: +BranchTagDialog.working = \u4F5C\u696D\u30B3\u30D4\u30FC BranchTagOperation.0 = \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0\u306E\u4F5C\u6210 {0} BranchTagOperation.taskName = SVN \u30D6\u30E9\u30F3\u30C1/\u30BF\u30B0 Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/dialogs/BranchTagDialog.java =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/dialogs/BranchTagDialog.java (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/dialogs/BranchTagDialog.java (working copy) @@ -83,6 +83,9 @@ private long revisionNumber = 0; private Alias newAlias; + private Button switchAfterBranchTagCheckBox; + private boolean switchAfterBranchTag; + public void setRevisionNumber(long revisionNumber) { this.revisionNumber = revisionNumber; } @@ -244,11 +247,7 @@ revisionButton.addSelectionListener(selectionListener); workingCopyButton.addSelectionListener(selectionListener); - if (resource != null) { - Label label = createWrappingLabel(top); - label.setText(Policy.bind("BranchTagDialog.note")); //$NON-NLS-1$ - } - + if (projectProperties != null) { addBugtrackingArea(top); } @@ -263,6 +262,11 @@ toUrlCombo.getCombo().setFocus(); + if (resource != null) { + switchAfterBranchTagCheckBox = new Button(composite, SWT.CHECK); + switchAfterBranchTagCheckBox.setText(Policy.bind("BranchTagDialog.switchAfterTagBranch")); + } + // set F1 help PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IHelpContextIds.BRANCH_TAG_DIALOG); @@ -328,6 +332,10 @@ toUrlCombo.saveUrl(); createOnServer = !workingCopyButton.getSelection(); specificRevision = revisionButton.getSelection(); + if(switchAfterBranchTagCheckBox != null) { + switchAfterBranchTag = switchAfterBranchTagCheckBox.getSelection(); + } + comment = commitCommentArea.getComment(); if (serverButton.getSelection()) revision = SVNRevision.HEAD; try { @@ -439,4 +447,7 @@ return newAlias; } + public boolean switchAfterTagBranch() { + return switchAfterBranchTag; + } } Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/actions/BranchTagAction.java =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/actions/BranchTagAction.java (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/actions/BranchTagAction.java (working copy) @@ -33,6 +33,7 @@ boolean createOnServer = dialog.isCreateOnServer(); BranchTagOperation branchTagOperation = new BranchTagOperation(getTargetPart(), getSelectedResources(), sourceUrl, destinationUrl, createOnServer, dialog.getRevision(), message); branchTagOperation.setNewAlias(dialog.getNewAlias()); + branchTagOperation.switchAfterTagBranchOperation(dialog.switchAfterTagBranch()); branchTagOperation.run(); } } Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages.properties =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages.properties (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages.properties (working copy) @@ -576,7 +576,7 @@ BranchTagDialog.fromUrl=From URL: BranchTagDialog.toUrl=To URL: BranchTagDialog.server=Create the branch/tag directly on the server -BranchTagDialog.note=Note: Your working copy remains on the previous path. If you want your next changes to be in the just created copy then you need to switch over to that copy path. Use the Switch option to do that. +BranchTagDialog.switchAfterTagBranch=Switch working copy to new branch/tag BranchTagAction.branch=Problem encountered performing branch/tag ChooseUrlDialog.title=Repository Browser ChooseUrlDialog.refresh=Refresh Index: C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_zh_TW.properties =================================================================== --- C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_zh_TW.properties (revision 2838) +++ C:/ws/subversion/org.tigris.subversion.subclipse.ui/src/org/tigris/subversion/subclipse/ui/messages_zh_TW.properties (working copy) @@ -1,3 +1,4 @@ +#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) #****************************************************************************** # Copyright (c) 2005, 2006 Subclipse project and others. # All rights reserved. This program and the accompanying materials @@ -86,7 +87,6 @@ BranchTagDialog.enterComment = \u8F38\u5165\u5206\u652F/\u6A19\u8A18\u7684\u8A3B\u91CB(&C): BranchTagDialog.fromUrl = \u7531 URL : BranchTagDialog.head = \u6700\u65B0\u4FEE\u8A02\u7248\u672C(HEAD) -BranchTagDialog.note = \u6CE8\u610F: \u4F60\u7684\u5DE5\u4F5C\u5340\u4ECD\u7136\u6703\u4FDD\u6301\u4E4B\u524D\u7684\u76EE\u9304\u3002\u5982\u679C\u4F60\u60F3\u5C07\u5F80\u5F8C\u7684\u8B8A\u66F4\u9001\u4EA4\u5230\u5C07\u8981\u5EFA\u7ACB\u7684\u526F\u672C\u76EE\u9304\uFF0C\u4F60\u5FC5\u9700\u5207\u63DB\u5230\u8A72\u526F\u672C\u7684\u76EE\u9304\u3002\u4F7F\u7528``\u5207\u63DB''\u64CD\u4F5C\u9032\u884C\u5207\u63DB\u76EE\u9304\u3002 BranchTagDialog.repository = \u6A94\u6848\u5EAB BranchTagDialog.revision = \u6307\u5B9A\u6A94\u6848\u5EAB\u4E2D\u7684\u4FEE\u8A02\u7248\u672C BranchTagDialog.server = \u5728\u4F3A\u670D\u5668\u5EFA\u7ACB\u5206\u652F/\u6A19\u8A18 @@ -352,7 +352,7 @@ Do_nothing_5 = \u7121\u52D5\u4F5C -EditConflicts.Label = \u7DE8\u4FEE\u885D\u7A81 +EditConflicts.Label = \u7DE8\u4FEE\u885D\u7A81 EditConflictsAction.errorTitle = \u7DE8\u4FEE\u885D\u7A81 EditConflictsAction.mergeProgramDoesNotExist = \u8A2D\u5B9A\u7684\u5408\u4F75\u5DE5\u5177\u7A0B\u5F0F\u4E0D\u5B58\u5728 @@ -1041,8 +1041,6 @@ SVNPropertyPage.copied = \u5DF2\u8907\u88FD SVNPropertyPage.copiedFrom = URL \u8907\u88FD\u65BC SVNPropertyPage.deleted = \u5DF2\u522A\u9664 -SVNPropertyPage.switched=Switched -SVNPropertyPage.wcLocked=Working copy locked SVNPropertyPage.ignored = \u5DF2\u5FFD\u7565 SVNPropertyPage.lockComment = \u9396\u5B9A\u8A3B\u89E3 SVNPropertyPage.lockCreationDate = \u9396\u5B9A\u5EFA\u7ACB\u65E5\u671F @@ -1053,7 +1051,9 @@ SVNPropertyPage.path = \u8DEF\u5F91 SVNPropertyPage.revision = \u4FEE\u8A02\u7248\u672C SVNPropertyPage.status = \u72C0\u614B +SVNPropertyPage.switched = Switched SVNPropertyPage.url = URL +SVNPropertyPage.wcLocked = Working copy locked SVNRefreshRemoteProjectWizard.title = \u66F4\u65B0\u5206\u652F