[EGIT PATCH 3/6] Handle null remoteName in RefSpecPanel better
From: Marek Zawirski <hidden>
Date: 2016-06-15 22:45:14
Subsystem:
the rest · Maintainer:
Linus Torvalds
Create more sensible "all branches" ref spec (refs/remotes/choose_remote_name/*), and don't use RemoteConfig contructor with null remoteName value, as this behavior is unspecified. Signed-off-by: Marek Zawirski <redacted> --- .../src/org/spearce/egit/ui/UIText.java | 3 ++ .../egit/ui/internal/components/RefSpecPanel.java | 30 +++++++++++++------ .../src/org/spearce/egit/ui/uitext.properties | 1 + 3 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
index b45d2e9..2bbe218 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java@@ -182,6 +182,9 @@ public static String RefSpecPanel_refChooseSomeWildcard; /** */ + public static String RefSpecPanel_refChooseRemoteName; + + /** */ public static String RefSpecPanel_clickToChange; /** */
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefSpecPanel.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefSpecPanel.java
index de82480..a2661ae 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefSpecPanel.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/components/RefSpecPanel.java@@ -413,14 +413,18 @@ public void setAssistanceData(final Repository localRepo, } try { - final RemoteConfig rc = new RemoteConfig(localDb.getConfig(), - remoteName); - if (pushSpecs) - predefinedConfigured = rc.getPushRefSpecs(); - else - predefinedConfigured = rc.getFetchRefSpecs(); - for (final RefSpec spec : predefinedConfigured) - addRefSpec(spec); + if (remoteName == null) + predefinedConfigured = Collections.emptyList(); + else { + final RemoteConfig rc = new RemoteConfig(localDb.getConfig(), + remoteName); + if (pushSpecs) + predefinedConfigured = rc.getPushRefSpecs(); + else + predefinedConfigured = rc.getFetchRefSpecs(); + for (final RefSpec spec : predefinedConfigured) + addRefSpec(spec); + } } catch (URISyntaxException e) { predefinedConfigured = null; ErrorDialog.openError(panel.getShell(),
@@ -432,9 +436,15 @@ public void setAssistanceData(final Repository localRepo, updateAddPredefinedButton(addConfiguredButton, predefinedConfigured); if (pushSpecs) predefinedBranches = Transport.REFSPEC_PUSH_ALL; - else + else { + final String r; + if (remoteName == null) + r = UIText.RefSpecPanel_refChooseRemoteName; + else + r = remoteName; predefinedBranches = new RefSpec("refs/heads/*:refs/remotes/" //$NON-NLS-1$ - + remoteName + "/*"); //$NON-NLS-1$ + + r + "/*"); //$NON-NLS-1$ + } updateAddPredefinedButton(addBranchesButton, predefinedBranches); setEnable(true); }
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
index 7fcc77b..c2b91f7 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties@@ -116,6 +116,7 @@ RefSpecPanel_predefinedTagsDescription=Add specification covering all tags. RefSpecPanel_push=push RefSpecPanel_refChooseSome=choose/some/ref RefSpecPanel_refChooseSomeWildcard=choose/some/ref/* +RefSpecPanel_refChooseRemoteName=choose_remote_name RefSpecPanel_removeAll=Remove all specs RefSpecPanel_removeAllDescription=Remove all speficications. RefSpecPanel_removeDescription=Click to remove this specification.
--
1.5.6.3