diff -r d0cbddfe3f4c -r a1dd7bd26a2b mercurial/subrepo.py --- a/mercurial/subrepo.py Mon Dec 06 21:17:27 2010 -0500 +++ b/mercurial/subrepo.py Mon Dec 06 21:17:27 2010 -0500 @@ -719,10 +719,9 @@ if self._state[1] != self._gitstate(): # version checked out changed? return True # check for staged changes or modified files; ignore untracked files - # docs say --porcelain flag is future-proof format - changed = self._gitcommand(['status', '--porcelain', - '--untracked-files=no']) - return bool(changed) + status = self._gitcommand(['status']) + return ('\n# Changed but not updated:' in status or + '\n# Changes to be committed:' in status) def get(self, state): source, revision, kind = state