From 27ce04bb5b21dc07671addcf954f3efcf3bf95e8 Mon Sep 17 00:00:00 2001 From: Petar Perisin <petar.perisin@gmail.com> Date: Mon, 2 Dec 2013 21:15:39 +0100 Subject: [PATCH] Git: search for gitk in path if all else fails Change-Id: I4799791b2baffa61092c01699a4128f01151b53c Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com> --- src/plugins/git/gitclient.cpp | 37 +++++++++++++++++++++++------------ src/plugins/git/gitclient.h | 3 +-- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 4636c673615..3f73eaf1e76 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2880,12 +2880,31 @@ void GitClient::launchGitK(const QString &workingDirectory, const QString &fileN QDir foundBinDir(binaryInfo.dir()); const bool foundBinDirIsCmdDir = foundBinDir.dirName() == QLatin1String("cmd"); QProcessEnvironment env = processEnvironment(); - if (tryLauchingGitK(env, workingDirectory, fileName, foundBinDir.path(), foundBinDirIsCmdDir)) + if (tryLauchingGitK(env, workingDirectory, fileName, foundBinDir.path())) return; - if (!foundBinDirIsCmdDir) + + QString gitkPath = foundBinDir.path() + QLatin1String("/gitk"); + VcsBase::VcsBaseOutputWindow::instance()->appendSilently(msgCannotLaunch(gitkPath)); + + if (foundBinDirIsCmdDir) { + foundBinDir.cdUp(); + if (tryLauchingGitK(env, workingDirectory, fileName, + foundBinDir.path() + QLatin1String("/bin"))) { + return; + } + gitkPath = foundBinDir.path() + QLatin1String("/gitk"); + VcsBase::VcsBaseOutputWindow::instance()->appendSilently(msgCannotLaunch(gitkPath)); + } + + Utils::Environment sysEnv = Utils::Environment::systemEnvironment(); + const QString exec = sysEnv.searchInPath(QLatin1String("gitk")); + + if (!exec.isEmpty() && tryLauchingGitK(env, workingDirectory, fileName, + QFileInfo(exec).absolutePath())) { return; - foundBinDir.cdUp(); - tryLauchingGitK(env, workingDirectory, fileName, foundBinDir.path() + QLatin1String("/bin"), false); + } + + VcsBase::VcsBaseOutputWindow::instance()->appendError(msgCannotLaunch(QLatin1String("gitk"))); } void GitClient::launchRepositoryBrowser(const QString &workingDirectory) @@ -2898,8 +2917,7 @@ void GitClient::launchRepositoryBrowser(const QString &workingDirectory) bool GitClient::tryLauchingGitK(const QProcessEnvironment &env, const QString &workingDirectory, const QString &fileName, - const QString &gitBinDirectory, - bool silent) + const QString &gitBinDirectory) { QString binary = gitBinDirectory + QLatin1String("/gitk"); QStringList arguments; @@ -2934,12 +2952,7 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env, } else { success = QProcess::startDetached(binary, arguments, workingDirectory); } - if (!success) { - if (silent) - outwin->appendSilently(msgCannotLaunch(binary)); - else - outwin->appendError(msgCannotLaunch(binary)); - } + return success; } diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 6d5593df4c4..5e8131925b1 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -410,8 +410,7 @@ private: bool tryLauchingGitK(const QProcessEnvironment &env, const QString &workingDirectory, const QString &fileName, - const QString &gitBinDirectory, - bool silent); + const QString &gitBinDirectory); bool cleanList(const QString &workingDirectory, const QString &flag, QStringList *files, QString *errorMessage); mutable QString m_gitVersionForBinary; -- GitLab