From 17ce5d86be70276c34a121c01defbbac5cfd44eb Mon Sep 17 00:00:00 2001 From: Oleg Shpynov Date: Tue, 7 Jun 2011 19:47:20 +0400 Subject: [PATCH] MAGETAB-74 modal committing form to github overlaps everything and hangs if git executable has not been specified. --- .../github/GithubCheckoutProvider.java | 3 +++ .../plugins/github/GithubShareAction.java | 5 ++-- .../jetbrains/plugins/github/GithubUtil.java | 24 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java b/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java index 8ec8f7b1edc4..5c6e4c51d13b 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubCheckoutProvider.java @@ -41,6 +41,9 @@ public class GithubCheckoutProvider implements CheckoutProvider { @Override public void doCheckout(@NotNull final Project project, @Nullable final Listener listener) { + if (!GithubUtil.testGitExecutable(project)){ + return; + } BasicAction.saveAll(); final List availableRepos = GithubUtil.getAvailableRepos(project, false); if (availableRepos == null){ diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java b/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java index 34d448c5c2fe..a33ad9ab45bb 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubShareAction.java @@ -17,7 +17,6 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.Ref; -import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.VcsOutgoingChangesProvider; import com.intellij.openapi.vcs.changes.ChangeListManager; @@ -26,7 +25,6 @@ import com.intellij.openapi.vcs.changes.actions.RefreshAction; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.util.Consumer; import com.intellij.util.containers.HashSet; import git4idea.GitRemote; import git4idea.GitUtil; @@ -69,6 +67,9 @@ public class GithubShareAction extends DumbAwareAction { @Override public void actionPerformed(final AnActionEvent e) { final Project project = e.getData(PlatformDataKeys.PROJECT); + if (!GithubUtil.testGitExecutable(project)){ + return; + } final VirtualFile root = project.getBaseDir(); // Check if git is already initialized and presence of remote branch final boolean gitDetected = GitUtil.isUnderGit(root); diff --git a/plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java b/plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java index 4f6973926ee5..6af7001bedca 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java +++ b/plugins/github/src/org/jetbrains/plugins/github/GithubUtil.java @@ -20,6 +20,7 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; @@ -28,6 +29,9 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.net.HttpConfigurable; import git4idea.GitRemote; import git4idea.GitUtil; +import git4idea.config.GitVcsApplicationSettings; +import git4idea.config.GitVersion; +import git4idea.i18n.GitBundle; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.UsernamePasswordCredentials; @@ -388,4 +392,24 @@ public class GithubUtil { } }); } + + public static boolean testGitExecutable(final Project project) { + final GitVcsApplicationSettings settings = GitVcsApplicationSettings.getInstance(); + final String executable = settings.getPathToGit(); + final GitVersion version; + try { + version = GitVersion.identifyVersion(executable); + } catch (Exception e) { + Messages.showErrorDialog(project, e.getMessage(), GitBundle.getString("find.git.error.title")); + return false; + } + + if (!version.isSupported()) { + Messages.showWarningDialog(project, GitBundle.message("find.git.unsupported.message", version.toString(), GitVersion.MIN), + GitBundle.getString("find.git.success.title")); + return false; + } + return true; + } + }