VCS: Show message box on timeouts/Add SSH prompt.

- Use message boxes on timeouts.
- Add a configuration for a graphical SSH password prompt binary with
defaults
- Launch commands that require authentification with no terminal on UNIX
and environment variable SSH_ASKPASS set accordingly.
- First attempt at introduce a common function to synchronously run VCS
commands in base plugin with flags.
- Use standard execution log entries in all VCS plugins (outputwindow).
This commit is contained in:
Friedemann Kleint
2010-05-21 17:46:00 +02:00
parent 91c4b0305c
commit 5364f5c152
26 changed files with 535 additions and 313 deletions

View File

@@ -136,7 +136,7 @@ bool MercurialClient::executeHgSynchronously(const QString &workingDir,
const QStringList arguments = settings.standardArguments() + args;
VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance();
outputWindow->appendCommand(MercurialJobRunner::msgExecute(binary, arguments));
outputWindow->appendCommand(workingDir, binary, args);
hgProcess.start(binary, arguments);
@@ -149,7 +149,7 @@ bool MercurialClient::executeHgSynchronously(const QString &workingDir,
QByteArray stdErr;
if (!Utils::SynchronousProcess::readDataFromProcess(hgProcess, settings.timeoutMilliSeconds(),
output, &stdErr)) {
output, &stdErr, true)) {
Utils::SynchronousProcess::stopProcess(hgProcess);
outputWindow->appendError(MercurialJobRunner::msgTimeout(settings.timeoutSeconds()));
return false;
@@ -457,6 +457,8 @@ void MercurialClient::pull(const QString &repositoryRoot, const QString &reposit
if (!repository.isEmpty())
args.append(repository);
QSharedPointer<HgTask> job(new HgTask(repositoryRoot, args, false, QVariant(repositoryRoot)));
// Suppress SSH prompting
job->setUnixTerminalDisabled(VCSBase::VCSBasePlugin::isSshPromptConfigured());
connect(job.data(), SIGNAL(succeeded(QVariant)), this, SIGNAL(changed(QVariant)), Qt::QueuedConnection);
enqueueJob(job);
}
@@ -468,6 +470,8 @@ void MercurialClient::push(const QString &repositoryRoot, const QString &reposit
args.append(repository);
QSharedPointer<HgTask> job(new HgTask(repositoryRoot, args, false));
// Suppress SSH prompting
job->setUnixTerminalDisabled(VCSBase::VCSBasePlugin::isSshPromptConfigured());
enqueueJob(job);
}
@@ -491,6 +495,9 @@ void MercurialClient::incoming(const QString &repositoryRoot, const QString &rep
true, "incoming", id);
QSharedPointer<HgTask> job(new HgTask(repositoryRoot, args, editor));
// Suppress SSH prompting.
if (!repository.isEmpty() && VCSBase::VCSBasePlugin::isSshPromptConfigured())
job->setUnixTerminalDisabled(true);
enqueueJob(job);
}
@@ -506,6 +513,8 @@ void MercurialClient::outgoing(const QString &repositoryRoot)
"outgoing", repositoryRoot);
QSharedPointer<HgTask> job(new HgTask(repositoryRoot, args, editor));
// Suppress SSH prompting
job->setUnixTerminalDisabled(VCSBase::VCSBasePlugin::isSshPromptConfigured());
enqueueJob(job);
}
@@ -532,6 +541,8 @@ void MercurialClient::update(const QString &repositoryRoot, const QString &revis
args << revision;
QSharedPointer<HgTask> job(new HgTask(repositoryRoot, args, false, QVariant(repositoryRoot)));
// Suppress SSH prompting
job->setUnixTerminalDisabled(VCSBase::VCSBasePlugin::isSshPromptConfigured());
connect(job.data(), SIGNAL(succeeded(QVariant)), this, SIGNAL(changed(QVariant)), Qt::QueuedConnection);
enqueueJob(job);
}