diff options
author | Orgad Shaneh <[email protected]> | 2016-07-22 15:17:36 +0300 |
---|---|---|
committer | Orgad Shaneh <[email protected]> | 2016-07-22 15:18:00 +0300 |
commit | 1b34f2a4b8bc0b1f883a96c59eeb10fd34dee2bd (patch) | |
tree | f42b406d6f69451d9a0940d6e18742b5ad0729cc /src/plugins/vcsbase/vcsbaseclient.cpp | |
parent | 9ab6228ba06f738684538aeb8b9ad6f17bb89875 (diff) | |
parent | d8c18de93c3113743121cfcee4df1269d3127c2f (diff) |
Merge remote-tracking branch 'origin/4.1'
Change-Id: Ia90424d479936a898705c433e5810c77ae088b2c
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 03b3c34b0e4..aded32bdc4a 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -154,8 +154,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()) @@ -163,6 +168,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); @@ -181,18 +193,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, @@ -299,10 +308,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); @@ -317,10 +326,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, @@ -328,8 +337,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, @@ -337,8 +345,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, @@ -347,8 +354,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, |