// Describe a change using an optional format QString MercurialClient::shortDescriptionSync(const QString &workingDirectory, const QString &revision, const QString &format) { QStringList args; args << QLatin1String("log") << QLatin1String("-r") <<revision; if (!format.isEmpty()) args << QLatin1String("--template") << format; const SynchronousProcessResponse resp = vcsFullySynchronousExec(workingDirectory, args); if (resp.result != SynchronousProcessResponse::Finished) return revision; return stripLastNewline(resp.stdOut()); }
//! Removes the last committed revision(s) bool BazaarClient::synchronousUncommit(const QString &workingDir, const QString &revision, const QStringList &extraOptions) { QStringList args; args << QLatin1String("uncommit") << QLatin1String("--force") // Say yes to all questions << QLatin1String("--verbose") // Will print out what is being removed << revisionSpec(revision) << extraOptions; const SynchronousProcessResponse result = vcsFullySynchronousExec(workingDir, args); VcsOutputWindow::append(result.stdOut()); return result.result == SynchronousProcessResponse::Finished; }
void SynchronousProcessPrivate::clearForRun() { m_hangTimerCount = 0; m_stdOut.clearForRun(); m_stdErr.clearForRun(); m_result.clear(); m_startFailure = false; }
bool MercurialClient::manifestSync(const QString &repository, const QString &relativeFilename) { // This only works when called from the repo and outputs paths relative to it. const QStringList args(QLatin1String("manifest")); const SynchronousProcessResponse result = vcsFullySynchronousExec(repository, args); const QDir repositoryDir(repository); const QFileInfo needle = QFileInfo(repositoryDir, relativeFilename); const QStringList files = result.stdOut().split(QLatin1Char('\n')); foreach (const QString &fileName, files) { const QFileInfo managedFile(repositoryDir, fileName); if (needle == managedFile) return true; } return false; }
bool MercurialClient::synchronousPull(const QString &workingDir, const QString &srcLocation, const QStringList &extraOptions) { QStringList args; args << vcsCommandString(PullCommand) << extraOptions << srcLocation; // Disable UNIX terminals to suppress SSH prompting const unsigned flags = VcsCommand::SshPasswordPrompt | VcsCommand::ShowStdOut | VcsCommand::ShowSuccessMessage; // cause mercurial doesn`t understand LANG QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert(QLatin1String("LANGUAGE"), QLatin1String("C")); const SynchronousProcessResponse resp = VcsBasePlugin::runVcs( workingDir, vcsBinary(), args, vcsTimeoutS(), flags, nullptr, env); const bool ok = resp.result == SynchronousProcessResponse::Finished; parsePullOutput(resp.stdOut().trimmed()); return ok; }
QStringList MercurialClient::parentRevisionsSync(const QString &workingDirectory, const QString &file /* = QString() */, const QString &revision) { QStringList parents; QStringList args; args << QLatin1String("parents") << QLatin1String("-r") <<revision; if (!file.isEmpty()) args << file; const SynchronousProcessResponse resp = vcsFullySynchronousExec(workingDirectory, args); if (resp.result != SynchronousProcessResponse::Finished) return QStringList(); /* Looks like: \code changeset: 0:031a48610fba user: ... \endcode */ // Obtain first line and split by blank-delimited tokens const QStringList lines = resp.stdOut().split(QLatin1Char('\n')); if (lines.size() < 1) { VcsOutputWindow::appendSilently(msgParentRevisionFailed(workingDirectory, revision, msgParseParentsOutputFailed(resp.stdOut()))); return QStringList(); } QStringList changeSets = lines.front().simplified().split(QLatin1Char(' ')); if (changeSets.size() < 2) { VcsOutputWindow::appendSilently(msgParentRevisionFailed(workingDirectory, revision, msgParseParentsOutputFailed(resp.stdOut()))); return QStringList(); } // Remove revision numbers const QChar colon = QLatin1Char(':'); const QStringList::iterator end = changeSets.end(); QStringList::iterator it = changeSets.begin(); for (++it; it != end; ++it) { const int colonIndex = it->indexOf(colon); if (colonIndex != -1) parents.push_back(it->mid(colonIndex + 1)); } return parents; }
SubversionResponse SubversionPlugin::runSvn(const QString &workingDir, const QStringList &arguments, int timeOut, unsigned flags, QTextCodec *outputCodec) const { const FileName executable = m_settings.binaryPath(); SubversionResponse response; if (executable.isEmpty()) { response.error = true; response.message =tr("No subversion executable specified."); return response; } const SynchronousProcessResponse sp_resp = VcsBasePlugin::runVcs(workingDir, executable, arguments, timeOut, flags, outputCodec); response.error = sp_resp.result != SynchronousProcessResponse::Finished; if (response.error) response.message = sp_resp.exitMessage(executable.toString(), timeOut); response.stdErr = sp_resp.stdErr; response.stdOut = sp_resp.stdOut; return response; }