forked from qt-creator/qt-creator
Git: Fix finding of top-level directory
Fix finding of top-level directory for git when * Git version >= 1.7.0 and * the directory queried does not exist Task-number: QTCREATORBUG-6821 Change-Id: I54a6050b71fe924f421921b8e5b468578db1210d Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
This commit is contained in:
@@ -368,10 +368,24 @@ const char *GitClient::decorateOption = "--decorate";
|
|||||||
QString GitClient::findRepositoryForDirectory(const QString &dir)
|
QString GitClient::findRepositoryForDirectory(const QString &dir)
|
||||||
{
|
{
|
||||||
if (synchronousGitVersion(true) >= 0x010700) {
|
if (synchronousGitVersion(true) >= 0x010700) {
|
||||||
|
// Find a directory to run git in:
|
||||||
|
const QString root = QDir::rootPath();
|
||||||
|
const QString home = QDir::homePath();
|
||||||
|
|
||||||
|
QDir directory(dir);
|
||||||
|
do {
|
||||||
|
const QString absDirPath = directory.absolutePath();
|
||||||
|
if (absDirPath == root || absDirPath == home)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (directory.exists())
|
||||||
|
break;
|
||||||
|
} while (directory.cdUp());
|
||||||
|
|
||||||
QByteArray outputText;
|
QByteArray outputText;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
arguments << QLatin1String("rev-parse") << QLatin1String("--show-toplevel");
|
arguments << QLatin1String("rev-parse") << QLatin1String("--show-toplevel");
|
||||||
fullySynchronousGit(dir, arguments, &outputText, 0, false);
|
fullySynchronousGit(directory.absolutePath(), arguments, &outputText, 0, false);
|
||||||
return outputText.trimmed();
|
return outputText.trimmed();
|
||||||
} else {
|
} else {
|
||||||
// Check for ".git/config"
|
// Check for ".git/config"
|
||||||
|
|||||||
Reference in New Issue
Block a user