diff options
author | Robin Stocker | 2014-02-16 19:10:53 +0000 |
---|---|---|
committer | Matthias Sohn | 2014-02-16 21:39:34 +0000 |
commit | a32545beabdc46e2edc388590f5a95b7345f5dbc (patch) | |
tree | 7107eef9bc49e444f8146a5cad04d5ef2b232ec1 /org.eclipse.egit.ui | |
parent | 266c2790091598e93324b88e1d530c6a0c127d00 (diff) | |
download | egit-a32545beabdc46e2edc388590f5a95b7345f5dbc.tar.gz egit-a32545beabdc46e2edc388590f5a95b7345f5dbc.tar.xz egit-a32545beabdc46e2edc388590f5a95b7345f5dbc.zip |
Push Branch: Add checkbox for force push
Bug: 426919
Change-Id: If984e6b15388cb31c7e56eb803eacbc4657f8dc9
Signed-off-by: Robin Stocker <robin@nibor.org>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.egit.ui')
4 files changed, 24 insertions, 2 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java index 26b9e95925..9edc49ac54 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java @@ -1993,6 +1993,9 @@ public class UIText extends NLS { public static String PushBranchPage_ChooseRemoteError; /** */ + public static String PushBranchPage_ForceUpdateButton; + + /** */ public static String PushBranchPage_InvalidBranchNameError; /** */ diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchPage.java index cf892db659..0f9f4dde9a 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchPage.java @@ -68,6 +68,8 @@ public class PushBranchPage extends WizardPage { private UpstreamConfigComponent upstreamConfigComponent; + private boolean forceUpdateSelected = false; + /** Only set if user selected "New Remote" */ private AddRemotePage addRemotePage; @@ -120,6 +122,10 @@ public class PushBranchPage extends WizardPage { return upstreamConfig == UpstreamConfig.REBASE; } + boolean isForceUpdateSelected() { + return forceUpdateSelected; + } + public void createControl(Composite parent) { try { this.remoteConfigs = RemoteConfig.getAllRemoteConfigs(repository.getConfig()); @@ -189,6 +195,17 @@ public class PushBranchPage extends WizardPage { } }); + final Button forceUpdateButton = new Button(inputPanel, SWT.CHECK); + forceUpdateButton.setText(UIText.PushBranchPage_ForceUpdateButton); + forceUpdateButton.setSelection(false); + forceUpdateButton.setLayoutData(GridDataFactory.fillDefaults() + .grab(true, false).span(3, 1).create()); + forceUpdateButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + forceUpdateSelected = forceUpdateButton.getSelection(); + } + }); + setDefaultUpstreamConfig(); setControl(main); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchWizard.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchWizard.java index 4c5fcdc403..dee4ffb852 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchWizard.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushBranchWizard.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013 Robin Stocker <robin@nibor.org> and others. + * Copyright (c) 2013, 2014 Robin Stocker <robin@nibor.org> and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -142,7 +142,8 @@ public class PushBranchWizard extends Wizard { private List<RefSpec> getRefSpecs() { String src = refToPush.getName(); String dst = Constants.R_HEADS + pushBranchPage.getBranchName(); - RefSpec refSpec = new RefSpec(src + ":" + dst); //$NON-NLS-1$ + RefSpec refSpec = new RefSpec().setSourceDestination(src, dst) + .setForceUpdate(pushBranchPage.isForceUpdateSelected()); return Arrays.asList(refSpec); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties index d438de9a5c..b264de2564 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties @@ -687,6 +687,7 @@ PushAction_wrongURITitle=Corrupted Configuration PushBranchPage_BranchNameLabel=&Branch name: PushBranchPage_ChooseBranchNameError=Please choose a name for the new branch. PushBranchPage_ChooseRemoteError=Please choose or add a remote. +PushBranchPage_ForceUpdateButton=&Force overwrite of branch on remote if it exists and has diverged PushBranchPage_InvalidBranchNameError=Invalid branch name. PushBranchPage_NewRemoteButton=&New Remote... PushBranchPage_PageMessage=Select a remote and the name the branch should have on the remote. |