aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/git/commitdata.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@nokia.com>2010-12-20 10:24:35 +0100
committerTobias Hunger <tobias.hunger@nokia.com>2010-12-20 10:24:35 +0100
commit11e21e16c17964f7734ef9c8b97e3225553b891a (patch)
treeeaaa09d339c5ee88a3b39f2b49bb10a26e7cbdb9 /src/plugins/git/commitdata.cpp
parent94fc750a45a9973f2f3551f4b9fad2c4df595446 (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.cpp66
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;
}
}
}