Git 1.7.0 added a feature which marks submodules as dirty if an untracked file is in it.
--- a/article
+++ b/article
@@ -1 +1 @@
-Subproject commit aba7c80124b0ac07299f224f1bf7ddd4c9a095e3
+Subproject commit aba7c80124b0ac07299f224f1bf7ddd4c9a095e3-dirty...
diff --git a/south b/south
--- a/south
+++ b/south
@@ -1 +1 @@
-Subproject commit 6512510da9a408b178730f38fcac664483451ab0
+Subproject commit 6512510da9a408b178730f38fcac664483451ab0-dirty
Personally find it annoying because the files there just patch files or something I'm saving for later.
git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: article (modified content)
# modified: south (untracked content)
So you can see that "article" has files thats been modified, while "south" has files which are untracked.
To ignore this, you have to add the --ignore-submodules flags to your diff and status commands.
git status --ignore-submodules=dirty
git diff --ignore-submodules=dirty