diff options
author | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-03-25 12:30:07 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-03-26 14:20:54 +0000 |
commit | f44161bb9ac960ee8b0a804fbf6b3ca167138a9a (patch) | |
tree | df8d314f94dd1e14771b5823cd87549bf4ffdc23 | |
parent | 65cd5381d96812546cb4b775785aa63483b4aa8c (diff) |
Vcs: Add vcsBinary and vcsTimeout methods to VcsBaseClient
Change-Id: I966a76ee4c1e5c45ac7332613e90cf511afc584c
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r-- | src/plugins/git/changeselectiondialog.cpp | 2 | ||||
-rw-r--r-- | src/plugins/git/clonewizardpage.cpp | 2 | ||||
-rw-r--r-- | src/plugins/git/gerrit/gerritplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/git/gitclient.cpp | 39 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 3 | ||||
-rw-r--r-- | src/plugins/git/gitversioncontrol.cpp | 2 | ||||
-rw-r--r-- | src/plugins/git/mergetool.cpp | 2 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialclient.cpp | 4 | ||||
-rw-r--r-- | src/plugins/subversion/subversionclient.cpp | 18 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 62 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsettings.cpp | 5 | ||||
-rw-r--r-- | src/plugins/subversion/subversionsettings.h | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.cpp | 42 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.h | 12 |
14 files changed, 93 insertions, 104 deletions
diff --git a/src/plugins/git/changeselectiondialog.cpp b/src/plugins/git/changeselectiondialog.cpp index 662e443f19..e1492e0951 100644 --- a/src/plugins/git/changeselectiondialog.cpp +++ b/src/plugins/git/changeselectiondialog.cpp @@ -59,7 +59,7 @@ ChangeSelectionDialog::ChangeSelectionDialog(const QString &workingDirectory, Co , m_command(NoCommand) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); - m_gitExecutable = GitPlugin::instance()->gitClient()->gitExecutable(); + m_gitExecutable = GitPlugin::instance()->gitClient()->vcsBinary(); m_ui->setupUi(this); m_ui->workingDirectoryEdit->setText(workingDirectory); m_gitEnvironment = GitPlugin::instance()->gitClient()->processEnvironment(); diff --git a/src/plugins/git/clonewizardpage.cpp b/src/plugins/git/clonewizardpage.cpp index 5ba51b19a6..2a33213776 100644 --- a/src/plugins/git/clonewizardpage.cpp +++ b/src/plugins/git/clonewizardpage.cpp @@ -123,7 +123,7 @@ VcsCommand *CloneWizardPage::createCheckoutJob(Utils::FileName *checkoutPath) co if (d->recursiveCheckBox->isChecked()) args << QLatin1String("--recursive"); args << QLatin1String("--progress") << repository() << checkoutDir; - auto command = new VcsCommand(client->gitExecutable(), workingDirectory, + auto command = new VcsCommand(client->vcsBinary(), workingDirectory, client->processEnvironment()); command->addFlags(VcsBasePlugin::MergeOutputChannels); command->addJob(args, -1); diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp index 9baaddedff..7baa7da90f 100644 --- a/src/plugins/git/gerrit/gerritplugin.cpp +++ b/src/plugins/git/gerrit/gerritplugin.cpp @@ -405,7 +405,7 @@ void GerritPlugin::push() Utils::FileName GerritPlugin::gitBinary() { bool ok; - const Utils::FileName git = gitClient()->gitExecutable(&ok); + const Utils::FileName git = gitClient()->vcsBinary(&ok); if (!ok) { VcsBase::VcsOutputWindow::appendError(tr("Git is not available.")); return Utils::FileName(); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index b73d1d3129..2146451b7d 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -148,7 +148,7 @@ void BaseController::runCommand(const QList<QStringList> &args, QTextCodec *code m_command->cancel(); } - m_command = new VcsCommand(gitClient()->gitExecutable(), m_directory, gitClient()->processEnvironment()); + m_command = new VcsCommand(gitClient()->vcsBinary(), m_directory, gitClient()->processEnvironment()); m_command->setCodec(codec ? codec : EditorManager::defaultTextCodec()); connect(m_command, &VcsCommand::output, this, &BaseController::processOutput); connect(m_command, &VcsCommand::finished, this, &BaseController::reloadFinished); @@ -157,7 +157,7 @@ void BaseController::runCommand(const QList<QStringList> &args, QTextCodec *code foreach (const QStringList &arg, args) { QTC_ASSERT(!arg.isEmpty(), continue); - m_command->addJob(arg, GitPlugin::instance()->settings().intValue(GitSettings::timeoutKey)); + m_command->addJob(arg, gitClient()->vcsTimeout()); } m_command->execute(); @@ -1582,7 +1582,7 @@ void GitClient::branchesForCommit(const QString &revision) auto controller = qobject_cast<DiffEditorController *>(sender()); QString workingDirectory = controller->baseDirectory(); - auto command = new VcsCommand(gitExecutable(), workingDirectory, processEnvironment()); + auto command = new VcsCommand(vcsBinary(), workingDirectory, processEnvironment()); command->setCodec(getSourceCodec(currentDocumentPath())); connect(command, &VcsCommand::output, controller, @@ -1990,7 +1990,7 @@ VcsCommand *GitClient::createCommand(const QString &workingDirectory, int editorLineNumber) { GitEditorWidget *gitEditor = qobject_cast<GitEditorWidget *>(editor); - auto command = new VcsCommand(gitExecutable(), workingDirectory, processEnvironment()); + auto command = new VcsCommand(vcsBinary(), workingDirectory, processEnvironment()); command->setCodec(getSourceCodec(currentDocumentPath())); command->setCookie(QVariant(editorLineNumber)); if (gitEditor) { @@ -2018,11 +2018,9 @@ VcsCommand *GitClient::executeGit(const QString &workingDirectory, unsigned additionalFlags, int editorLineNumber) { - VcsOutputWindow::appendCommand(workingDirectory, - FileName::fromUserInput(settings()->stringValue(GitSettings::binaryPathKey)), - arguments); + VcsOutputWindow::appendCommand(workingDirectory, vcsBinary(), arguments); VcsCommand *command = createCommand(workingDirectory, editor, useOutputToWindow, editorLineNumber); - command->addJob(arguments, settings()->intValue(GitSettings::timeoutKey)); + command->addJob(arguments, vcsTimeout() * 1000); command->addFlags(additionalFlags); command->execute(); return command; @@ -2088,8 +2086,7 @@ SynchronousProcessResponse GitClient::synchronousGit(const QString &workingDirec unsigned flags, QTextCodec *outputCodec) const { - return VcsBasePlugin::runVcs(workingDirectory, gitExecutable(), gitArguments, - settings()->intValue(GitSettings::timeoutKey) * 1000, + return VcsBasePlugin::runVcs(workingDirectory, vcsBinary(), gitArguments, vcsTimeout() * 1000, flags, outputCodec, processEnvironment()); } @@ -2099,10 +2096,9 @@ bool GitClient::fullySynchronousGit(const QString &workingDirectory, QByteArray* errorText, unsigned flags) const { - VcsCommand command(gitExecutable(), workingDirectory, processEnvironment()); + VcsCommand command(vcsBinary(), workingDirectory, processEnvironment()); command.addFlags(flags); - return command.runFullySynchronous(gitArguments, - settings()->intValue(GitSettings::timeoutKey) * 1000, + return command.runFullySynchronous(gitArguments, vcsTimeout() * 1000, outputText, errorText); } @@ -2387,7 +2383,7 @@ QStringList GitClient::synchronousRepositoryBranches(const QString &repositoryUR void GitClient::launchGitK(const QString &workingDirectory, const QString &fileName) { - const QFileInfo binaryInfo = gitExecutable().toFileInfo(); + const QFileInfo binaryInfo = vcsBinary().toFileInfo(); QDir foundBinDir(binaryInfo.dir()); const bool foundBinDirIsCmdDir = foundBinDir.dirName() == QLatin1String("cmd"); QProcessEnvironment env = processEnvironment(); @@ -2469,7 +2465,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env, bool GitClient::launchGitGui(const QString &workingDirectory) { bool success; - FileName gitBinary = gitExecutable(&success); + FileName gitBinary = vcsBinary(&success); if (success) { success = QProcess::startDetached(gitBinary.toString(), QStringList(QLatin1String("gui")), workingDirectory); @@ -2483,7 +2479,7 @@ bool GitClient::launchGitGui(const QString &workingDirectory) { FileName GitClient::gitBinDirectory() { - const QString git = gitExecutable().toString(); + const QString git = vcsBinary().toString(); if (git.isEmpty()) return FileName(); @@ -2499,11 +2495,16 @@ FileName GitClient::gitBinDirectory() return FileName::fromString(path); } -FileName GitClient::gitExecutable(bool *ok, QString *errorMessage) const +FileName GitClient::vcsBinary(bool *ok, QString *errorMessage) const { return settings()->gitExecutable(ok, errorMessage); } +int GitClient::vcsTimeout() const +{ + return settings()->intValue(GitSettings::timeoutKey); +} + QTextCodec *GitClient::encoding(const QString &workingDirectory, const QByteArray &configVar) const { QString codecName = readConfigValue(workingDirectory, QLatin1String(configVar)).trimmed(); @@ -3343,7 +3344,7 @@ GitSettings *GitClient::settings() const // determine version as '(major << 16) + (minor << 8) + patch' or 0. unsigned GitClient::gitVersion(QString *errorMessage) const { - const FileName newGitBinary = gitExecutable(); + const FileName newGitBinary = vcsBinary(); if (m_gitVersionForBinary != newGitBinary && !newGitBinary.isEmpty()) { // Do not execute repeatedly if that fails (due to git // not being installed) until settings are changed. @@ -3356,7 +3357,7 @@ unsigned GitClient::gitVersion(QString *errorMessage) const // determine version as '(major << 16) + (minor << 8) + patch' or 0. unsigned GitClient::synchronousGitVersion(QString *errorMessage) const { - if (gitExecutable().isEmpty()) + if (vcsBinary().isEmpty()) return 0; // run git --version diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index a41a424cc6..1359b72de5 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -136,7 +136,8 @@ public: explicit GitClient(GitSettings *settings); - Utils::FileName gitExecutable(bool *ok = 0, QString *errorMessage = 0) const; + Utils::FileName vcsBinary(bool *ok = 0, QString *errorMessage = 0) const; + int vcsTimeout() const; unsigned gitVersion(QString *errorMessage = 0) const; QString findRepositoryForDirectory(const QString &dir) const; diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp index f33409abf0..3b62907601 100644 --- a/src/plugins/git/gitversioncontrol.cpp +++ b/src/plugins/git/gitversioncontrol.cpp @@ -82,7 +82,7 @@ Core::Id GitVersionControl::id() const bool GitVersionControl::isConfigured() const { bool ok = false; - m_client->gitExecutable(&ok); + m_client->vcsBinary(&ok); return ok; } diff --git a/src/plugins/git/mergetool.cpp b/src/plugins/git/mergetool.cpp index 2cbace20b2..bd0e1f610d 100644 --- a/src/plugins/git/mergetool.cpp +++ b/src/plugins/git/mergetool.cpp @@ -102,7 +102,7 @@ bool MergeTool::start(const QString &workingDirectory, const QStringList &files) } m_process = new MergeToolProcess(this); m_process->setWorkingDirectory(workingDirectory); - const Utils::FileName binary = m_gitClient->gitExecutable(); + const Utils::FileName binary = m_gitClient->vcsBinary(); VcsOutputWindow::appendCommand(workingDirectory, binary, arguments); m_process->start(binary.toString(), arguments); if (m_process->waitForStarted()) { diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp index 1f51137eed..11d82b4ec0 100644 --- a/src/plugins/mercurial/mercurialclient.cpp +++ b/src/plugins/mercurial/mercurialclient.cpp @@ -160,14 +160,12 @@ bool MercurialClient::synchronousPull(const QString &workingDir, const QString & VcsBasePlugin::SshPasswordPrompt | VcsBasePlugin::ShowStdOutInLogWindow | VcsBasePlugin::ShowSuccessMessage; - const FileName binary = settings()->binaryPath(); - const int timeoutSec = settings()->value(settings()->timeoutKey).toInt(); // cause mercurial doesn`t understand LANG QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert(QLatin1String("LANGUAGE"), QLatin1String("C")); const SynchronousProcessResponse resp = VcsBasePlugin::runVcs( - workingDir, binary, args, timeoutSec * 1000, flags, 0, env); + workingDir, vcsBinary(), args, vcsTimeout() * 1000, flags, 0, env); const bool ok = resp.result == SynchronousProcessResponse::Finished; parsePullOutput(resp.stdOut.trimmed()); diff --git a/src/plugins/subversion/subversionclient.cpp b/src/plugins/subversion/subversionclient.cpp index bce6f4016b..58045aa281 100644 --- a/src/plugins/subversion/subversionclient.cpp +++ b/src/plugins/subversion/subversionclient.cpp @@ -182,8 +182,6 @@ private slots: private: QString getDescription() const; void postCollectTextualDiffOutput(); - int timeout() const; - FileName subversionPath() const; QProcessEnvironment processEnvironment() const; const SubversionClient *m_client; @@ -201,16 +199,6 @@ DiffController::DiffController(IDocument *document, const SubversionClient *clie forceContextLineCount(3); // SVN can not change that when using internal diff } -int DiffController::timeout() const -{ - return m_client->settings()->intValue(VcsBaseClientSettings::timeoutKey); -} - -FileName DiffController::subversionPath() const -{ - return m_client->settings()->binaryPath(); -} - QProcessEnvironment DiffController::processEnvironment() const { return m_client->processEnvironment(); @@ -240,7 +228,7 @@ QString DiffController::getDescription() const args << QString::number(m_changeNumber); const SubversionResponse logResponse = SubversionPlugin::instance()->runSvn(m_workingDirectory, args, - m_client->settings()->timeOutMs(), + m_client->vcsTimeout() * 1000, VcsBasePlugin::SshPasswordPrompt); if (logResponse.error) @@ -251,7 +239,7 @@ QString DiffController::getDescription() const void DiffController::postCollectTextualDiffOutput() { - auto command = new VcsCommand(subversionPath(), m_workingDirectory, processEnvironment()); + auto command = new VcsCommand(m_client->vcsBinary(), m_workingDirectory, processEnvironment()); command->setCodec(EditorManager::defaultTextCodec()); connect(command, SIGNAL(output(QString)), this, SLOT(slotTextualDiffOutputReceived(QString))); @@ -270,7 +258,7 @@ void DiffController::postCollectTextualDiffOutput() args << m_filesList; } - command->addJob(args, timeout()); + command->addJob(args, m_client->vcsTimeout()); command->execute(); } diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index d34593ce50..036edbfdf9 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -580,9 +580,9 @@ void SubversionPlugin::revertAll() args << QLatin1String("revert"); args << SubversionClient::addAuthenticationOptions(settings()); args << QLatin1String("--recursive") << state.topLevel(); - const SubversionResponse revertResponse = - runSvn(state.topLevel(), args, m_settings.timeOutMs(), - SshPasswordPrompt|ShowStdOutInLogWindow); + const SubversionResponse revertResponse + = runSvn(state.topLevel(), args, m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ShowStdOutInLogWindow); if (revertResponse.error) QMessageBox::warning(ICore::dialogParent(), title, tr("Revert failed: %1").arg(revertResponse.message), QMessageBox::Ok); @@ -599,8 +599,8 @@ void SubversionPlugin::revertCurrentFile() args << SubversionClient::addAuthenticationOptions(settings()); args.push_back(state.relativeCurrentFile()); - const SubversionResponse diffResponse = - runSvn(state.currentFileTopLevel(), args, m_settings.timeOutMs(), 0); + const SubversionResponse diffResponse + = runSvn(state.currentFileTopLevel(), args, m_client->vcsTimeout() * 1000, 0); if (diffResponse.error) return; @@ -620,9 +620,9 @@ void SubversionPlugin::revertCurrentFile() args << SubversionClient::addAuthenticationOptions(settings()); args << state.relativeCurrentFile(); - const SubversionResponse revertResponse = - runSvn(state.currentFileTopLevel(), args, m_settings.timeOutMs(), - SshPasswordPrompt|ShowStdOutInLogWindow); + const SubversionResponse revertResponse + = runSvn(state.currentFileTopLevel(), args, m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ShowStdOutInLogWindow); if (!revertResponse.error) subVersionControl()->emitFilesChanged(QStringList(state.currentFile())); @@ -683,8 +683,8 @@ void SubversionPlugin::startCommit(const QString &workingDir, const QStringList args << SubversionClient::addAuthenticationOptions(settings()); args += files; - const SubversionResponse response = - runSvn(workingDir, args, m_settings.timeOutMs(), 0); + const SubversionResponse response + = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, 0); if (response.error) return; @@ -764,7 +764,7 @@ void SubversionPlugin::svnStatus(const QString &workingDir, const QString &relat if (!relativePath.isEmpty()) args.append(relativePath); VcsOutputWindow::setRepository(workingDir); - runSvn(workingDir, args, m_settings.timeOutMs(), + runSvn(workingDir, args, m_client->vcsTimeout() * 1000, ShowStdOutInLogWindow|ShowSuccessMessage); VcsOutputWindow::clearRepository(); } @@ -790,9 +790,9 @@ void SubversionPlugin::svnUpdate(const QString &workingDir, const QString &relat args.push_back(QLatin1String(Constants::NON_INTERACTIVE_OPTION)); if (!relativePath.isEmpty()) args.append(relativePath); - const SubversionResponse response = - runSvn(workingDir, args, 10 * m_settings.timeOutMs(), - SshPasswordPrompt|ShowStdOutInLogWindow); + const SubversionResponse response + = runSvn(workingDir, args, 10 * m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ShowStdOutInLogWindow); if (!response.error) subVersionControl()->emitRepositoryChanged(workingDir); } @@ -828,9 +828,9 @@ void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &fil args.push_back(QLatin1String("-v")); args.append(QDir::toNativeSeparators(file)); - const SubversionResponse response = - runSvn(workingDir, args, m_settings.timeOutMs(), - SshPasswordPrompt|ForceCLocale, codec); + const SubversionResponse response + = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ForceCLocale, codec); if (response.error) return; @@ -1006,9 +1006,9 @@ bool SubversionPlugin::vcsAdd(const QString &workingDir, const QString &rawFileN args << QLatin1String("add") << SubversionClient::addAuthenticationOptions(settings()) << QLatin1String("--parents") << file; - const SubversionResponse response = - runSvn(workingDir, args, m_settings.timeOutMs(), - SshPasswordPrompt|ShowStdOutInLogWindow); + const SubversionResponse response + = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ShowStdOutInLogWindow); return !response.error; } @@ -1020,9 +1020,9 @@ bool SubversionPlugin::vcsDelete(const QString &workingDir, const QString &rawFi args << QLatin1String("delete"); args << SubversionClient::addAuthenticationOptions(settings()) << QLatin1String("--force") << file; - const SubversionResponse response = - runSvn(workingDir, args, m_settings.timeOutMs(), - SshPasswordPrompt|ShowStdOutInLogWindow); + const SubversionResponse response + = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ShowStdOutInLogWindow); return !response.error; } @@ -1031,9 +1031,9 @@ bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, c QStringList args(QLatin1String("move")); args << SubversionClient::addAuthenticationOptions(settings()); args << QDir::toNativeSeparators(from) << QDir::toNativeSeparators(to); - const SubversionResponse response = - runSvn(workingDir, args, m_settings.timeOutMs(), - SshPasswordPrompt|ShowStdOutInLogWindow|FullySynchronously); + const SubversionResponse response + = runSvn(workingDir, args, m_client->vcsTimeout() * 1000, + SshPasswordPrompt|ShowStdOutInLogWindow|FullySynchronously); return !response.error; } @@ -1059,9 +1059,9 @@ bool SubversionPlugin::vcsCheckout(const QString &directory, const QByteArray &u args << QLatin1String(tempUrl.toEncoded()) << directory; - const SubversionResponse response = runSvn(directory, args, - 10 * m_settings.timeOutMs(), - VcsBasePlugin::SshPasswordPrompt); + const SubversionResponse response + = runSvn(directory, args, 10 * m_client->vcsTimeout() * 1000, + VcsBasePlugin::SshPasswordPrompt); return !response.error; } @@ -1094,8 +1094,8 @@ bool SubversionPlugin::managesFile(const QString &workingDirectory, const QStrin QStringList args; args << QLatin1String("status"); args << SubversionClient::addAuthenticationOptions(settings()) << fileName; - SubversionResponse response = - runSvn(workingDirectory, args, m_settings.timeOutMs(), 0); + SubversionResponse response + = runSvn(workingDirectory, args, m_client->vcsTimeout() * 1000, 0); return response.stdOut.isEmpty() || response.stdOut.at(0) != QLatin1Char('?'); } diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index 89247465e4..1dd5b20e9d 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -63,11 +63,6 @@ bool SubversionSettings::hasAuthentication() const return boolValue(useAuthenticationKey) && !stringValue(userKey).isEmpty(); } -int SubversionSettings::timeOutMs() const -{ - return 1000 * intValue(timeoutKey); -} - void SubversionSettings::readLegacySettings(const QSettings *settings) { const QString keyRoot = settingsGroup() + QLatin1Char('/'); diff --git a/src/plugins/subversion/subversionsettings.h b/src/plugins/subversion/subversionsettings.h index 3c00a12664..015b5f2b67 100644 --- a/src/plugins/subversion/subversionsettings.h +++ b/src/plugins/subversion/subversionsettings.h @@ -49,8 +49,6 @@ public: SubversionSettings(); bool hasAuthentication() const; - int timeOutMs() const; - protected: void readLegacySettings(const QSettings *settings); }; diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index 31509def76..6792b5afd1 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -238,10 +238,9 @@ bool VcsBaseClient::vcsFullySynchronousExec(const QString &workingDir, vcsProcess.setWorkingDirectory(workingDir); vcsProcess.setProcessEnvironment(processEnvironment()); - const Utils::FileName binary = settings()->binaryPath(); - - VcsOutputWindow::appendCommand(workingDir, binary, args); + VcsOutputWindow::appendCommand(workingDir, vcsBinary(), args); + const Utils::FileName binary = vcsBinary(); vcsProcess.start(binary.toString(), args); if (!vcsProcess.waitForStarted()) { @@ -253,12 +252,11 @@ bool VcsBaseClient::vcsFullySynchronousExec(const QString &workingDir, vcsProcess.closeWriteChannel(); QByteArray stdErr; - const int timeoutSec = settings()->intValue(VcsBaseClientSettings::timeoutKey); - if (!Utils::SynchronousProcess::readDataFromProcess(vcsProcess, timeoutSec * 1000, + if (!Utils::SynchronousProcess::readDataFromProcess(vcsProcess, vcsTimeout() * 1000, output, &stdErr, true)) { Utils::SynchronousProcess::stopProcess(vcsProcess); VcsOutputWindow::appendError(tr("Timed out after %1s waiting for the process %2 to finish.") - .arg(timeoutSec).arg(binary.toUserOutput())); + .arg(vcsTimeout()).arg(binary.toUserOutput())); return false; } if (!stdErr.isEmpty()) @@ -267,16 +265,13 @@ bool VcsBaseClient::vcsFullySynchronousExec(const QString &workingDir, return vcsProcess.exitStatus() == QProcess::NormalExit && vcsProcess.exitCode() == 0; } -Utils::SynchronousProcessResponse VcsBaseClient::vcsSynchronousExec( - const QString &workingDirectory, - const QStringList &args, - unsigned flags, - QTextCodec *outputCodec) const +Utils::SynchronousProcessResponse VcsBaseClient::vcsSynchronousExec(const QString &workingDirectory, + const QStringList &args, + unsigned flags, + QTextCodec *outputCodec) const { - const Utils::FileName binary = settings()->binaryPath(); - const int timeoutSec = settings()->intValue(VcsBaseClientSettings::timeoutKey); - return VcsBasePlugin::runVcs(workingDirectory, binary, args, - timeoutSec * 1000, flags, outputCodec); + return VcsBasePlugin::runVcs(workingDirectory, vcsBinary(), args, vcsTimeout() * 1000, + flags, outputCodec); } void VcsBaseClient::annotate(const QString &workingDir, const QString &file, @@ -507,8 +502,7 @@ VcsBaseClientSettings *VcsBaseClient::settings() const QString VcsBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const { - const Utils::FileName binary = settings()->binaryPath(); - return binary.toFileInfo().baseName() + + return vcsBinary().toFileInfo().baseName() + QLatin1Char(' ') + vcsCmd + QLatin1Char(' ') + Utils::FileName::fromString(sourceId).fileName(); } @@ -554,9 +548,9 @@ VcsCommand *VcsBaseClient::createCommand(const QString &workingDirectory, VcsBaseEditorWidget *editor, JobOutputBindMode mode) const { - auto cmd = new VcsCommand(d->m_clientSettings->binaryPath(), workingDirectory, + auto cmd = new VcsCommand(vcsBinary(), workingDirectory, processEnvironment()); - cmd->setDefaultTimeout(d->m_clientSettings->intValue(VcsBaseClientSettings::timeoutKey)); + cmd->setDefaultTimeout(vcsTimeout()); if (editor) d->bindCommandToEditor(cmd, editor); if (mode == VcsWindowOutputBind) { @@ -581,6 +575,16 @@ void VcsBaseClient::resetCachedVcsInfo(const QString &workingDir) Core::VcsManager::resetVersionControlForDirectory(workingDir); } +Utils::FileName VcsBaseClient::vcsBinary() const +{ + return d->m_clientSettings->binaryPath(); +} + +int VcsBaseClient::vcsTimeout() const +{ + return d->m_clientSettings->intValue(VcsBaseClientSettings::timeoutKey); +} + void VcsBaseClient::statusParser(const QString &text) { QList<VcsBaseClient::StatusItem> lineInfoList; diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index 37f355e2ae..2cac2e5321 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -33,6 +33,8 @@ #include "vcsbase_global.h" +#include <utils/fileutils.h> + #include <QObject> #include <QStringList> @@ -125,6 +127,9 @@ public: virtual VcsBaseClientSettings *settings() const; virtual QProcessEnvironment processEnvironment() const; + Utils::FileName vcsBinary() const; + int vcsTimeout() const; + signals: void parsedStatus(const QList<VcsBase::VcsBaseClient::StatusItem> &statusList); // Passes on changed signals from VcsJob to Control @@ -167,8 +172,7 @@ protected: QString vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const; // Fully synchronous VCS execution (QProcess-based) - bool vcsFullySynchronousExec(const QString &workingDir, - const QStringList &args, + bool vcsFullySynchronousExec(const QString &workingDir, const QStringList &args, QByteArray *output) const; // Synchronous VCS execution using Utils::SynchronousProcess, with // log windows updating (using VcsBasePlugin::runVcs with flags) @@ -187,8 +191,8 @@ protected: }; VcsCommand *createCommand(const QString &workingDirectory, - VcsBaseEditorWidget *editor = 0, - JobOutputBindMode mode = NoOutputBind) const; + VcsBaseEditorWidget *editor = 0, + JobOutputBindMode mode = NoOutputBind) const; void enqueueJob(VcsCommand *cmd, const QStringList &args, Utils::ExitCodeInterpreter *interpreter = 0); void resetCachedVcsInfo(const QString &workingDir); |