Vcs: Add vcsBinary and vcsTimeout methods to VcsBaseClient

Change-Id: I966a76ee4c1e5c45ac7332613e90cf511afc584c
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Tobias Hunger
2015-03-25 12:30:07 +01:00
parent 65cd5381d9
commit f44161bb9a
14 changed files with 93 additions and 104 deletions

View File

@@ -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();

View File

@@ -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);

View File

@@ -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();

View File

@@ -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

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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()) {