diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp index 71275202537184ff892d304b01c2ab0b8e35f8c5..b1307515ff84bb1eb5fe09e1823a0f1494b9049e 100644 --- a/src/plugins/git/commitdata.cpp +++ b/src/plugins/git/commitdata.cpp @@ -156,39 +156,43 @@ bool CommitData::parseFilesFromStatus(const QString &output) const QStringList::const_iterator cend = lines.constEnd(); for (QStringList::const_iterator it = lines.constBegin(); it != cend; ++it) { - const QString line = *it; + QString line = *it; if (line.startsWith(branchIndicator)) { panelInfo.branch = line.mid(branchIndicator.size() + 1); - } else { - if (line.startsWith(commitIndicator)) { - s = CommitFiles; - } else { - if (line.startsWith(notUpdatedIndicator)) { - s = NotUpdatedFiles; - } else { - if (line.startsWith(untrackedIndicator)) { - // Now match untracked: "#<tab>foo.cpp" - s = UntrackedFiles; - filesPattern = QRegExp(QLatin1String("#\\t.+")); - QTC_ASSERT(filesPattern.isValid(), return false); - } else { - if (filesPattern.exactMatch(line)) { - switch (s) { - case CommitFiles: - addStateFileSpecification(line, &stagedFiles); - break; - case NotUpdatedFiles: - addStateFileSpecification(line, &unstagedFiles); - break; - case UntrackedFiles: - untrackedFiles.push_back(line.mid(2).trimmed()); - break; - case None: - break; - } - } - } - } + continue; + } + if (line.startsWith(commitIndicator)) { + s = CommitFiles; + continue; + } + if (line.startsWith(notUpdatedIndicator)) { + s = NotUpdatedFiles; + continue; + } + if (line.startsWith(untrackedIndicator)) { + // Now match untracked: "#<tab>foo.cpp" + s = UntrackedFiles; + filesPattern = QRegExp(QLatin1String("#\\t.+")); + QTC_ASSERT(filesPattern.isValid(), return false); + continue; + } + if (filesPattern.exactMatch(line)) { + switch (s) { + case CommitFiles: + addStateFileSpecification(line, &stagedFiles); + break; + case NotUpdatedFiles: + // skip submodules: + if (line.endsWith(QLatin1String(" (modified content)")) + || line.endsWith(" (new commits)")) + line = line.left(line.lastIndexOf(QLatin1Char('(')) - 1); + addStateFileSpecification(line, &unstagedFiles); + break; + case UntrackedFiles: + untrackedFiles.push_back(line.mid(2).trimmed()); + break; + case None: + break; } } } diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index be02c7fadb4b5b8a8a271c68f1a574ddc973a12a..fce5c71102e2ba1f1ed79dbbd5e94e19886aa1e4 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1801,6 +1801,8 @@ bool GitClient::getCommitData(const QString &workingDirectory, // # (use "git add <file>..." to update what will be committed) // # // # modified: someother.cpp + // # modified: submodule (modified content) + // # modified: submodule2 (new commit) // # // # Untracked files: // # (use "git add <file>..." to include in what will be committed)