From 80a7107691643f5df121e383efb1f1975b64c744 Mon Sep 17 00:00:00 2001
From: Petar Perisin <petar.perisin@gmail.com>
Date: Mon, 3 Jun 2013 23:12:17 +0200
Subject: [PATCH] Git - execute fetch asynchronously

Change-Id: Ic2243adaa36444099f834676186331927f3f4588
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/git/gitclient.cpp    | 9 +++------
 src/plugins/git/gitclient.h      | 2 +-
 src/plugins/git/gitplugin.cpp    | 2 +-
 src/plugins/git/remotedialog.cpp | 2 +-
 4 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index aebcb0ebe55..ecd0e71f4f4 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2839,16 +2839,13 @@ void GitClient::revert(const QStringList &files, bool revertStaging)
     }
 }
 
-bool GitClient::synchronousFetch(const QString &workingDirectory, const QString &remote)
+void GitClient::fetch(const QString &workingDirectory, const QString &remote)
 {
     QStringList arguments(QLatin1String("fetch"));
     arguments << (remote.isEmpty() ? QLatin1String("--all") : remote);
 
-    // Disable UNIX terminals to suppress SSH prompting.
-    const unsigned flags = VcsBase::VcsBasePlugin::SshPasswordPrompt|VcsBase::VcsBasePlugin::ShowStdOutInLogWindow
-                           |VcsBase::VcsBasePlugin::ShowSuccessMessage;
-    const Utils::SynchronousProcessResponse resp = synchronousGit(workingDirectory, arguments, flags);
-    return resp.result == Utils::SynchronousProcessResponse::Finished;
+    VcsBase::Command *cmd = executeGit(workingDirectory, arguments, 0, true);
+    connectRepositoryChanged(workingDirectory, cmd);
 }
 
 bool GitClient::executeAndHandleConflicts(const QString &workingDirectory,
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 024ed600281..ef0c1ec31af 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -238,7 +238,7 @@ public:
 
     bool cloneRepository(const QString &directory, const QByteArray &url);
     QString vcsGetRepositoryURL(const QString &directory);
-    bool synchronousFetch(const QString &workingDirectory, const QString &remote);
+    void fetch(const QString &workingDirectory, const QString &remote);
     bool synchronousPull(const QString &workingDirectory, bool rebase);
     bool synchronousPush(const QString &workingDirectory,
                          const QStringList &pushArgs = QStringList());
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 215e9e67d19..3384d7f4112 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -1075,7 +1075,7 @@ bool GitPlugin::submitEditorAboutToClose()
 
 void GitPlugin::fetch()
 {
-    m_gitClient->synchronousFetch(currentState().topLevel(), QString());
+    m_gitClient->fetch(currentState().topLevel(), QString());
 }
 
 void GitPlugin::pull()
diff --git a/src/plugins/git/remotedialog.cpp b/src/plugins/git/remotedialog.cpp
index a027d62bf2d..37ebd29421a 100644
--- a/src/plugins/git/remotedialog.cpp
+++ b/src/plugins/git/remotedialog.cpp
@@ -184,7 +184,7 @@ void RemoteDialog::fetchFromRemote()
 
     int row = indexList.at(0).row();
     const QString remoteName = m_remoteModel->remoteName(row);
-    m_remoteModel->client()->synchronousFetch(m_remoteModel->workingDirectory(), remoteName);
+    m_remoteModel->client()->fetch(m_remoteModel->workingDirectory(), remoteName);
 }
 
 void RemoteDialog::updateButtonState()
-- 
GitLab