diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCheckoutProvider.java b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCheckoutProvider.java
index 4b96b79e58af..876b55e3646a 100644
--- a/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCheckoutProvider.java
+++ b/plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCheckoutProvider.java
@@ -15,6 +15,9 @@
*/
package org.zmlx.hg4idea.provider;
+import com.intellij.notification.Notification;
+import com.intellij.notification.NotificationType;
+import com.intellij.notification.Notifications;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.progress.ProgressIndicator;
@@ -25,6 +28,7 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.zmlx.hg4idea.HgVcs;
import org.zmlx.hg4idea.HgVcsMessages;
import org.zmlx.hg4idea.command.HgCloneCommand;
import org.zmlx.hg4idea.command.HgCommandResult;
@@ -55,13 +59,18 @@ public class HgCheckoutProvider implements CheckoutProvider {
}
final String targetDir = destinationParent.getPath() + File.separator + dialog.getDirectoryName();
- new Task.Backgroundable(project, HgVcsMessages.message("hg4idea.clone.progress", dialog.getSourceRepositoryURL()), true) {
+ final String sourceRepositoryURL = dialog.getSourceRepositoryURL();
+ new Task.Backgroundable(project, HgVcsMessages.message("hg4idea.clone.progress", sourceRepositoryURL), true) {
@Override public void run(@NotNull ProgressIndicator indicator) {
HgCloneCommand clone = new HgCloneCommand(project);
- clone.setRepositoryURL(dialog.getSourceRepositoryURL());
+ clone.setRepositoryURL(sourceRepositoryURL);
clone.setDirectory(targetDir);
final HgCommandResult myCloneResult = clone.execute();
- if (myCloneResult != null && myCloneResult.getExitValue() == 0) {
+ if (myCloneResult == null) {
+ notifyError("Clone failed", "Clone failed due to unknown error", project);
+ } else if (myCloneResult.getExitValue() != 0) {
+ notifyError("Clone failed", "Clone from " + sourceRepositoryURL + " failed.
" + myCloneResult.getRawError(), project);
+ } else {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
@@ -77,6 +86,10 @@ public class HgCheckoutProvider implements CheckoutProvider {
}
+ private static void notifyError(String title, String description, Project project) {
+ Notifications.Bus.notify(new Notification(HgVcs.NOTIFICATION_GROUP_ID, title, description, NotificationType.ERROR), project);
+ }
+
/**
* {@inheritDoc}
*/