From 5478cf3c7858a3aba7e0ce86386d70346b4460af Mon Sep 17 00:00:00 2001 From: Petar Perisin Date: Mon, 22 Apr 2013 23:31:24 +0200 Subject: [PATCH] Git - bugFix in submoduleList it looks like submodule list in git config does not return paths. that is why I have direct reading of .gitmodules file now. Change-Id: I7f441d0b2e31ad7b73fbc8c05e5c9a9e0c84036c Reviewed-by: Orgad Shaneh --- src/plugins/git/gitclient.cpp | 33 +++++++++++---------------------- src/plugins/git/gitclient.h | 3 +-- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 8e47c99f8f0..f4b65335d22 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1574,33 +1574,22 @@ QMap GitClient::synchronousRemotesList(const QString &workingDi return result; } -QMap GitClient::synchronousSubmoduleList(const QString &workingDirectory, - QString *errorMessage) +// function returns submodules in format path=url +QMap GitClient::synchronousSubmoduleList(const QString &workingDirectory) { - QStringList args; QMap result; - args << QLatin1String("config") << QLatin1String("-l"); - QByteArray outputText; - QByteArray errorText; - const bool rc = fullySynchronousGit(workingDirectory, args, &outputText, &errorText); - if (!rc) { - QString message = msgCannotRun(QLatin1String("git config -l"), workingDirectory, commandOutputFromLocal8Bit(errorText)); - - if (errorMessage) - *errorMessage = message; - else - outputWindow()->append(message); + if (!QFile::exists(workingDirectory + QLatin1String("/.gitmodules"))) return result; + + QSettings gitmodulesFile(workingDirectory + QLatin1String("/.gitmodules"), QSettings::IniFormat); + + foreach (const QString &submoduleGroup, gitmodulesFile.childGroups()) { + gitmodulesFile.beginGroup(submoduleGroup); + result.insertMulti(gitmodulesFile.value(QLatin1String("path")).toString(), + gitmodulesFile.value(QLatin1String("url")).toString()); + gitmodulesFile.endGroup(); } - QStringList outputList = commandOutputLinesFromLocal8Bit(outputText); - QString urlKey = QLatin1String(".url="); - foreach (const QString& line, outputList) { - if (line.startsWith(QLatin1String("submodule."))) { - result.insertMulti(line.mid(10, line.indexOf(urlKey) - 10), - line.mid(line.indexOf(urlKey, 10) + 5)); - } - } return result; } diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 549869b39f0..b6e9315c013 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -198,8 +198,7 @@ public: QMap synchronousRemotesList(const QString &workingDirectory, QString *errorMessage = 0); - QMap synchronousSubmoduleList(const QString &workingDirectory, - QString *errorMessage = 0); + QMap synchronousSubmoduleList(const QString &workingDirectory); bool synchronousShow(const QString &workingDirectory, const QString &id, QString *output, QString *errorMessage);