diff options
author | Tobias Hunger <tobias.hunger@nokia.com> | 2010-12-20 10:24:35 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2010-12-20 10:24:35 +0100 |
commit | 11e21e16c17964f7734ef9c8b97e3225553b891a (patch) | |
tree | eaaa09d339c5ee88a3b39f2b49bb10a26e7cbdb9 /src/plugins/git/commitdata.cpp | |
parent | 94fc750a45a9973f2f3551f4b9fad2c4df595446 (diff) |
Git: Improve handling of git submodules
Task-number: QTCREATORBUG-3390
Diffstat (limited to 'src/plugins/git/commitdata.cpp')
-rw-r--r-- | src/plugins/git/commitdata.cpp | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp index 7127520253..b1307515ff 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; } } } |