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 <orgads@gmail.com>
This commit is contained in:
Petar Perisin
2013-04-22 23:31:24 +02:00
parent 895b89dbdf
commit 5478cf3c78
2 changed files with 12 additions and 24 deletions

View File

@@ -1574,33 +1574,22 @@ QMap<QString,QString> GitClient::synchronousRemotesList(const QString &workingDi
return result; return result;
} }
QMap<QString,QString> GitClient::synchronousSubmoduleList(const QString &workingDirectory, // function returns submodules in format path=url
QString *errorMessage) QMap<QString,QString> GitClient::synchronousSubmoduleList(const QString &workingDirectory)
{ {
QStringList args;
QMap<QString,QString> result; QMap<QString,QString> result;
args << QLatin1String("config") << QLatin1String("-l"); if (!QFile::exists(workingDirectory + QLatin1String("/.gitmodules")))
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);
return result; 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; return result;
} }

View File

@@ -198,8 +198,7 @@ public:
QMap<QString,QString> synchronousRemotesList(const QString &workingDirectory, QMap<QString,QString> synchronousRemotesList(const QString &workingDirectory,
QString *errorMessage = 0); QString *errorMessage = 0);
QMap<QString,QString> synchronousSubmoduleList(const QString &workingDirectory, QMap<QString,QString> synchronousSubmoduleList(const QString &workingDirectory);
QString *errorMessage = 0);
bool synchronousShow(const QString &workingDirectory, const QString &id, bool synchronousShow(const QString &workingDirectory, const QString &id,
QString *output, QString *errorMessage); QString *output, QString *errorMessage);