diff options
author | Tobias Hunger <[email protected]> | 2016-07-05 10:34:41 +0200 |
---|---|---|
committer | Tobias Hunger <[email protected]> | 2016-07-15 14:16:29 +0000 |
commit | ca7a924a068b23815e3915b1f2887eed0e38ef7f (patch) | |
tree | ec66142140b89602411ed8b92da41d9d2754c621 /src/plugins/vcsbase/vcsbaseclient.cpp | |
parent | 5efd82468b0802fd0f6993b8a430acc09c6293a9 (diff) |
VCS: VcsBaseClient::vcsFullySynchronousExec returns a SynchronousProcessResponse
Change-Id: Ic155da2ed1fd36f1f91327ac90f34a5cad3c210e
Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseclient.cpp')
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.cpp | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index 2a0b8f87f1c..e33c854464c 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -155,8 +155,13 @@ QString VcsBaseClientImpl::commandOutputFromLocal8Bit(const QByteArray &a) QStringList VcsBaseClientImpl::commandOutputLinesFromLocal8Bit(const QByteArray &a) { - QString output = commandOutputFromLocal8Bit(a); + return splitLines(commandOutputFromLocal8Bit(a)); +} + +QStringList VcsBaseClientImpl::splitLines(const QString &s) +{ const QChar newLine = QLatin1Char('\n'); + QString output = s; if (output.endsWith(newLine)) output.truncate(output.size() - 1); if (output.isEmpty()) @@ -164,6 +169,13 @@ QStringList VcsBaseClientImpl::commandOutputLinesFromLocal8Bit(const QByteArray return output.split(newLine); } +QString VcsBaseClientImpl::stripLastNewline(const QString &in) +{ + if (in.endsWith('\n')) + return in.left(in.count() - 1); + return in; +} + void VcsBaseClientImpl::resetCachedVcsInfo(const QString &workingDir) { Core::VcsManager::resetVersionControlForDirectory(workingDir); @@ -182,18 +194,15 @@ void VcsBaseClientImpl::annotateRevisionRequested(const QString &workingDirector annotate(workingDirectory, file, changeCopy, line); } -bool VcsBaseClientImpl::vcsFullySynchronousExec(const QString &workingDir, const QStringList &args, - QByteArray *outputData, QByteArray *errorData, - unsigned flags) const +Utils::SynchronousProcessResponse +VcsBaseClientImpl::vcsFullySynchronousExec(const QString &workingDir, const QStringList &args, + unsigned flags, int timeoutS, QTextCodec *codec) const { - QByteArray internalErrorData; - QScopedPointer<VcsCommand> command(createCommand(workingDir)); - command->addFlags(flags); - bool result = command->runFullySynchronous(vcsBinary(), args, vcsTimeoutS(), outputData, - errorData ? errorData : &internalErrorData); - if (!internalErrorData.isEmpty() && !(flags & VcsCommand::SuppressStdErr)) - VcsOutputWindow::appendError(commandOutputFromLocal8Bit(internalErrorData)); - return result; + VcsCommand command(workingDir, processEnvironment()); + command.addFlags(flags); + if (codec) + command.setCodec(codec); + return command.runCommand(vcsBinary(), args, (timeoutS > 0) ? timeoutS : vcsTimeoutS()); } VcsCommand *VcsBaseClientImpl::vcsExec(const QString &workingDirectory, const QStringList &arguments, @@ -300,10 +309,10 @@ bool VcsBaseClient::synchronousCreateRepository(const QString &workingDirectory, { QStringList args(vcsCommandString(CreateRepositoryCommand)); args << extraOptions; - QByteArray outputData; - if (!vcsFullySynchronousExec(workingDirectory, args, &outputData)) + Utils::SynchronousProcessResponse result = vcsFullySynchronousExec(workingDirectory, args); + if (result.result != Utils::SynchronousProcessResponse::Finished) return false; - VcsOutputWindow::append(commandOutputFromLocal8Bit(outputData)); + VcsOutputWindow::append(result.stdOut()); resetCachedVcsInfo(workingDirectory); @@ -318,10 +327,10 @@ bool VcsBaseClient::synchronousClone(const QString &workingDir, QStringList args; args << vcsCommandString(CloneCommand) << extraOptions << srcLocation << dstLocation; - QByteArray stdOut; - const bool cloneOk = vcsFullySynchronousExec(workingDir, args, &stdOut); + + Utils::SynchronousProcessResponse result = vcsFullySynchronousExec(workingDir, args); resetCachedVcsInfo(workingDir); - return cloneOk; + return result.result == Utils::SynchronousProcessResponse::Finished; } bool VcsBaseClient::synchronousAdd(const QString &workingDir, const QString &filename, @@ -329,8 +338,7 @@ bool VcsBaseClient::synchronousAdd(const QString &workingDir, const QString &fil { QStringList args; args << vcsCommandString(AddCommand) << extraOptions << filename; - QByteArray stdOut; - return vcsFullySynchronousExec(workingDir, args, &stdOut); + return vcsFullySynchronousExec(workingDir, args).result == Utils::SynchronousProcessResponse::Finished; } bool VcsBaseClient::synchronousRemove(const QString &workingDir, const QString &filename, @@ -338,8 +346,7 @@ bool VcsBaseClient::synchronousRemove(const QString &workingDir, const QString & { QStringList args; args << vcsCommandString(RemoveCommand) << extraOptions << filename; - QByteArray stdOut; - return vcsFullySynchronousExec(workingDir, args, &stdOut); + return vcsFullySynchronousExec(workingDir, args).result == Utils::SynchronousProcessResponse::Finished; } bool VcsBaseClient::synchronousMove(const QString &workingDir, @@ -348,8 +355,7 @@ bool VcsBaseClient::synchronousMove(const QString &workingDir, { QStringList args; args << vcsCommandString(MoveCommand) << extraOptions << from << to; - QByteArray stdOut; - return vcsFullySynchronousExec(workingDir, args, &stdOut); + return vcsFullySynchronousExec(workingDir, args).result == Utils::SynchronousProcessResponse::Finished; } bool VcsBaseClient::synchronousPull(const QString &workingDir, |