From 808afcfbb2d03220cab4d85a51c82c8c2737bfbe Mon Sep 17 00:00:00 2001
From: Petar Perisin <petar.perisin@gmail.com>
Date: Tue, 7 May 2013 19:32:33 +0200
Subject: [PATCH] Git - made Clean List support submodules

Change-Id: I106420e8492d64451eee3648800ce57a4de2bfb9
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
---
 src/plugins/git/gitclient.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 13ac15ba6a5..6596c2a4131 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2029,7 +2029,6 @@ bool GitClient::synchronousShow(const QString &workingDirectory, const QString &
 // Retrieve list of files to be cleaned
 bool GitClient::cleanList(const QString &workingDirectory, const QString &flag, QStringList *files, QString *errorMessage)
 {
-    files->clear();
     QStringList args;
     args << QLatin1String("clean") << QLatin1String("--dry-run") << flag;
     QByteArray outputText;
@@ -2052,6 +2051,15 @@ bool GitClient::synchronousCleanList(const QString &workingDirectory, QStringLis
 {
     bool res = cleanList(workingDirectory, QLatin1String("-df"), files, errorMessage);
     res &= cleanList(workingDirectory, QLatin1String("-dXf"), ignoredFiles, errorMessage);
+
+    SubmoduleDataMap submodules = submoduleList(workingDirectory);
+    foreach (const SubmoduleData &submodule, submodules) {
+        if (submodule.ignore != QLatin1String("all")
+                && submodule.ignore != QLatin1String("dirty")) {
+            res &= synchronousCleanList(workingDirectory + QLatin1Char('/') + submodule.dir,
+                                        files, ignoredFiles, errorMessage);
+        }
+    }
     return res;
 }
 
-- 
GitLab