Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/egit/EGitUiUtil.java')
-rw-r--r--org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/egit/EGitUiUtil.java36
1 files changed, 31 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/egit/EGitUiUtil.java b/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/egit/EGitUiUtil.java
index 51f19c9cd..1d7f25eed 100644
--- a/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/egit/EGitUiUtil.java
+++ b/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/egit/EGitUiUtil.java
@@ -16,6 +16,7 @@ import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -42,9 +43,11 @@ import org.eclipse.jgit.transport.RemoteConfig;
import org.eclipse.mylyn.internal.gerrit.core.GerritCorePlugin;
import org.eclipse.mylyn.internal.gerrit.core.GerritUtil;
import org.eclipse.mylyn.internal.gerrit.core.client.GerritConfiguration;
+import org.eclipse.mylyn.internal.gerrit.core.client.GerritException;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.swt.widgets.Shell;
+import com.google.gerrit.reviewdb.AccountGeneralPreferences.DownloadScheme;
import com.google.gerrit.reviewdb.PatchSet;
import com.google.gerrit.reviewdb.Project;
@@ -97,12 +100,13 @@ public class EGitUiUtil {
public GitRepositoryInfo getGitRepositoryInfo() throws NoRepositoryInfoException {
GitRepositoryInfo gitRepositoryInfo;
try {
- GerritConfiguration config = GerritCorePlugin.getGerritClient(repository).getConfiguration();
- gitRepositoryInfo = new GitRepositoryInfo(GerritUtil.getSshCloneUri(repository, config, project));
- } catch (URISyntaxException e) {
- throw new NoRepositoryInfoException(e.getMessage(), e);
+ GerritConfiguration config = GerritCorePlugin.getGerritClient(repository).refreshConfig(null);
+ gitRepositoryInfo = new GitRepositoryInfo(getCloneUriForRepo(repository, config, project));
+ return gitRepositoryInfo;
+ } catch (GerritException e) {
+
}
- return gitRepositoryInfo;
+ return null;
}
});
WizardDialog dlg = new WizardDialog(shell, cloneWizard);
@@ -110,4 +114,26 @@ public class EGitUiUtil {
return dlg.open();
}
+ private static String getCloneUriForRepo(TaskRepository repository, GerritConfiguration config, Project project)
+ throws NoRepositoryInfoException {
+ try {
+ Map<DownloadScheme, String> cloneUris = GerritUtil.getCloneUris(config, repository, project);
+ if (cloneUris.keySet().contains(DownloadScheme.SSH)) {
+ return cloneUris.get(DownloadScheme.SSH);
+ }
+ if (cloneUris.keySet().contains(DownloadScheme.HTTP)) {
+ return cloneUris.get(DownloadScheme.HTTP);
+ }
+ for (DownloadScheme scheme : cloneUris.keySet()) {
+ if (cloneUris.get(scheme) != null) {
+ return cloneUris.get(scheme);
+ }
+ }
+ return null;
+ } catch (URISyntaxException e) {
+ throw new NoRepositoryInfoException(e.getMessage(), e);
+ }
+
+ }
+
}

Back to the top