aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/vcsbase/vcsbaseplugin.cpp
diff options
context:
space:
mode:
authorTobias Hunger <[email protected]>2011-10-05 10:35:24 +0000
committerTobias Hunger <[email protected]>2011-10-05 16:03:32 +0200
commit363b230abfb825c0e28b38904c734de45f779571 (patch)
tree4f75bf2f8fda8ae5e6aa9d3252bba968bd8a7286 /src/plugins/vcsbase/vcsbaseplugin.cpp
parentf6068c1ff91d834b1483d7508fcd2a851269747d (diff)
git: Reuse more code from vcsbase
Change-Id: I873d2caa2cead5c339eec887a5fcdef4d33bec24 Reviewed-on: http://codereview.qt-project.org/6071 Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseplugin.cpp')
-rw-r--r--src/plugins/vcsbase/vcsbaseplugin.cpp66
1 files changed, 52 insertions, 14 deletions
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index a2207342653..d011686bf9f 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -843,26 +843,25 @@ static Utils::SynchronousProcessResponse
Utils::SynchronousProcessResponse
- VCSBasePlugin::runVCS(const QString &workingDir,
- const QString &binary,
- const QStringList &arguments,
- int timeOutMS,
- unsigned flags,
- QTextCodec *outputCodec /* = 0 */)
+VCSBasePlugin::runVCS(const QString &workingDir,
+ const QString &binary,
+ const QStringList &arguments,
+ int timeOutMS,
+ unsigned flags,
+ QTextCodec *outputCodec)
{
const QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
return runVCS(workingDir, binary, arguments, timeOutMS, env,
flags, outputCodec);
}
-Utils::SynchronousProcessResponse
- VCSBasePlugin::runVCS(const QString &workingDir,
- const QString &binary,
- const QStringList &arguments,
- int timeOutMS,
- QProcessEnvironment env,
- unsigned flags,
- QTextCodec *outputCodec /* = 0 */)
+Utils::SynchronousProcessResponse VCSBasePlugin::runVCS(const QString &workingDir,
+ const QString &binary,
+ const QStringList &arguments,
+ int timeOutMS,
+ QProcessEnvironment env,
+ unsigned flags,
+ QTextCodec *outputCodec)
{
VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance();
@@ -950,6 +949,45 @@ Utils::SynchronousProcessResponse
return response;
}
+bool VCSBasePlugin::runFullySynchronous(const QString &workingDirectory,
+ const QString &binary,
+ const QStringList &arguments,
+ const QProcessEnvironment &env,
+ QByteArray* outputText,
+ QByteArray* errorText,
+ int timeoutMS,
+ bool logCommandToWindow)
+{
+ VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance();
+
+ if (logCommandToWindow)
+ outputWindow->appendCommand(workingDirectory, binary, arguments);
+
+ QProcess process;
+ process.setWorkingDirectory(workingDirectory);
+ process.setProcessEnvironment(env);
+
+ process.start(binary, arguments);
+ process.closeWriteChannel();
+ if (!process.waitForStarted()) {
+ if (errorText) {
+ const QString msg = QString::fromLatin1("Unable to execute '%1': %2:")
+ .arg(binary, process.errorString());
+ *errorText = msg.toLocal8Bit();
+ }
+ return false;
+ }
+
+ if (!Utils::SynchronousProcess::readDataFromProcess(process, timeoutMS,
+ outputText, errorText, true)) {
+ errorText->append(tr("Error: Executable timed out after %1s.").arg(timeoutMS / 1000).toLocal8Bit());
+ Utils::SynchronousProcess::stopProcess(process);
+ return false;
+ }
+
+ return process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0;
+}
+
bool VCSBasePlugin::runPatch(const QByteArray &input, const QString &workingDirectory,
int strip, bool reverse)
{