From 02de54fd2271d58eac3b79c250a2de6c5e1f051e Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Tue, 20 Dec 2011 19:53:28 +0300 Subject: [PATCH] Fix GitHttpAdapter#isHttpUrl and rename to make more descriptive. Add a test. --- plugins/git4idea/src/git4idea/actions/GitPull.java | 2 +- .../src/git4idea/checkout/GitCheckoutProvider.java | 2 +- .../git4idea/src/git4idea/checkout/GitCloneDialog.java | 2 +- plugins/git4idea/src/git4idea/jgit/GitHttpAdapter.java | 8 ++++---- plugins/git4idea/src/git4idea/merge/GitPullDialog.java | 2 +- plugins/git4idea/src/git4idea/push/GitPusher.java | 4 ++-- plugins/git4idea/src/git4idea/update/GitFetcher.java | 2 +- .../netrc/n7_uppercase_and_order_change/n7_config.txt | 3 +++ .../netrc/n7_uppercase_and_order_change/n7_desc.txt | 1 + .../netrc/n7_uppercase_and_order_change/n7_result.txt | 1 + 10 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_config.txt create mode 100644 plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_desc.txt create mode 100644 plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_result.txt diff --git a/plugins/git4idea/src/git4idea/actions/GitPull.java b/plugins/git4idea/src/git4idea/actions/GitPull.java index 98304bc1a462..b29f0e1bc7e5 100644 --- a/plugins/git4idea/src/git4idea/actions/GitPull.java +++ b/plugins/git4idea/src/git4idea/actions/GitPull.java @@ -82,7 +82,7 @@ public class GitPull extends GitRepositoryAction { return; } - if (GitHttpAdapter.isHttpUrlWithoutUserCredentials(url)) { + if (GitHttpAdapter.shouldUseJGit(url)) { boolean fetchSuccessful = new GitFetcher(project, indicator).fetchRootsAndNotify(gitRoots, "Push failed", false); if (!fetchSuccessful) { return; diff --git a/plugins/git4idea/src/git4idea/checkout/GitCheckoutProvider.java b/plugins/git4idea/src/git4idea/checkout/GitCheckoutProvider.java index d4cb41e77a2a..f5077d4bc764 100644 --- a/plugins/git4idea/src/git4idea/checkout/GitCheckoutProvider.java +++ b/plugins/git4idea/src/git4idea/checkout/GitCheckoutProvider.java @@ -104,7 +104,7 @@ public class GitCheckoutProvider implements CheckoutProvider { } private static boolean doClone(@NotNull Project project, @NotNull String directoryName, @NotNull String parentDirectory, @NotNull String sourceRepositoryURL) { - if (GitHttpAdapter.isHttpUrlWithoutUserCredentials(sourceRepositoryURL)) { + if (GitHttpAdapter.shouldUseJGit(sourceRepositoryURL)) { GitFetchResult result = GitHttpAdapter.cloneRepository(project, new File(parentDirectory, directoryName), sourceRepositoryURL); GitFetcher.displayFetchResult(project, result, "Clone failed", result.getErrors()); return result.isSuccess(); diff --git a/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java b/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java index 769b67b9fa66..7e0351bf02bd 100644 --- a/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java +++ b/plugins/git4idea/src/git4idea/checkout/GitCloneDialog.java @@ -141,7 +141,7 @@ public class GitCloneDialog extends DialogWrapper { private void test() { myTestURL = getCurrentUrlText(); - boolean testResult = GitHttpAdapter.isHttpUrlWithoutUserCredentials(myTestURL) ? testHttp(myTestURL) : testNatively(myTestURL); + boolean testResult = GitHttpAdapter.shouldUseJGit(myTestURL) ? testHttp(myTestURL) : testNatively(myTestURL); if (testResult) { Messages.showInfoMessage(myTestButton, GitBundle.message("clone.test.success.message", myTestURL), diff --git a/plugins/git4idea/src/git4idea/jgit/GitHttpAdapter.java b/plugins/git4idea/src/git4idea/jgit/GitHttpAdapter.java index f5ef78f7d239..6c121759108e 100644 --- a/plugins/git4idea/src/git4idea/jgit/GitHttpAdapter.java +++ b/plugins/git4idea/src/git4idea/jgit/GitHttpAdapter.java @@ -65,11 +65,11 @@ public final class GitHttpAdapter { private static final Pattern HTTP_URL_WITH_USERNAME_AND_PASSWORD = Pattern.compile("http(s?)://([^\\s^@:]+):([^\\s^@:]+)@.*"); - public static boolean isHttpUrlWithoutUserCredentials(@NotNull String url) { - // if username & password are specified in the url, give it to the native Git + public static boolean shouldUseJGit(@NotNull String url) { if (!url.startsWith("http")) { return false; } + // if username & password are specified in the url, give it to the native Git if (HTTP_URL_WITH_USERNAME_AND_PASSWORD.matcher(url).matches()) { return false; } @@ -79,11 +79,11 @@ public final class GitHttpAdapter { return !netrcData.hasAuthDataForUrl(url); } catch (FileNotFoundException e) { - return false; + return true; } catch (IOException e) { LOG.warn("Couldn't read netrc file", e); - return false; + return true; } } diff --git a/plugins/git4idea/src/git4idea/merge/GitPullDialog.java b/plugins/git4idea/src/git4idea/merge/GitPullDialog.java index dd4056af5133..db8e7b4ec5d0 100644 --- a/plugins/git4idea/src/git4idea/merge/GitPullDialog.java +++ b/plugins/git4idea/src/git4idea/merge/GitPullDialog.java @@ -182,7 +182,7 @@ public class GitPullDialog extends DialogWrapper { @NotNull private Collection getRemoteBranches(@NotNull GitDeprecatedRemote remote) { - if (GitHttpAdapter.isHttpUrlWithoutUserCredentials(remote.fetchUrl())) { + if (GitHttpAdapter.shouldUseJGit(remote.fetchUrl())) { GitRepository repository = GitRepositoryManager.getInstance(myProject).getRepositoryForRoot(gitRoot()); if (repository == null) { return Collections.emptyList(); diff --git a/plugins/git4idea/src/git4idea/push/GitPusher.java b/plugins/git4idea/src/git4idea/push/GitPusher.java index ed83f78e39b7..c4391ab1e8f0 100644 --- a/plugins/git4idea/src/git4idea/push/GitPusher.java +++ b/plugins/git4idea/src/git4idea/push/GitPusher.java @@ -332,7 +332,7 @@ public final class GitPusher { return pushNatively(repository, pushSpec); } else { - return GitHttpAdapter.isHttpUrlWithoutUserCredentials(remoteUrl) ? GitHttpAdapter.push(repository, null, remoteUrl, null) : pushNatively(repository, pushSpec); + return GitHttpAdapter.shouldUseJGit(remoteUrl) ? GitHttpAdapter.push(repository, null, remoteUrl, null) : pushNatively(repository, pushSpec); } } else { @@ -340,7 +340,7 @@ public final class GitPusher { assert remote != null : "Remote can't be null for pushSpec " + pushSpec; String httpUrl = null; for (String pushUrl : remote.getPushUrls()) { - if (GitHttpAdapter.isHttpUrlWithoutUserCredentials(pushUrl)) { + if (GitHttpAdapter.shouldUseJGit(pushUrl)) { httpUrl = pushUrl; break; // TODO support http and ssh urls in one origin } diff --git a/plugins/git4idea/src/git4idea/update/GitFetcher.java b/plugins/git4idea/src/git4idea/update/GitFetcher.java index 7089b831cad8..d2d88c36e37a 100644 --- a/plugins/git4idea/src/git4idea/update/GitFetcher.java +++ b/plugins/git4idea/src/git4idea/update/GitFetcher.java @@ -67,7 +67,7 @@ public class GitFetcher { if (url == null) { continue; } - if (GitHttpAdapter.isHttpUrlWithoutUserCredentials(url)) { + if (GitHttpAdapter.shouldUseJGit(url)) { GitFetchResult res = GitHttpAdapter.fetch(repository, remote, url); myErrors.addAll(res.getErrors()); if (!res.isSuccess()) { diff --git a/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_config.txt b/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_config.txt new file mode 100644 index 000000000000..7a205675b3e3 --- /dev/null +++ b/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_config.txt @@ -0,0 +1,3 @@ +MACHine BITBUCKET.org + password pass + LOGIN john diff --git a/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_desc.txt b/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_desc.txt new file mode 100644 index 000000000000..43fca76614c8 --- /dev/null +++ b/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_desc.txt @@ -0,0 +1 @@ +n7 uppercase, login & password order change diff --git a/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_result.txt b/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_result.txt new file mode 100644 index 000000000000..8d6804e3f9af --- /dev/null +++ b/plugins/git4idea/testData/netrc/n7_uppercase_and_order_change/n7_result.txt @@ -0,0 +1 @@ +bitbucket.org john pass