subrepo: don't commit in subrepo if it's clean
If a subrepo has changed relative to the outer repo's substate, but the
subrepo itself is clean, we don't need to commit in the subrepo.
--- a/mercurial/subrepo.py Mon Jul 18 22:58:21 2011 +0200
+++ b/mercurial/subrepo.py Tue Jul 19 13:43:53 2011 -0500
@@ -420,6 +420,10 @@
return self._repo._checknested(self._repo.wjoin(path))
def commit(self, text, user, date):
+ # don't bother committing in the subrepo if it's only been
+ # updated
+ if not self.dirty(True):
+ return self._repo['.'].hex()
self._repo.ui.debug("committing subrepo %s\n" % subrelpath(self))
n = self._repo.commit(text, user, date)
if not n:
--- a/tests/test-mq-subrepo.t Mon Jul 18 22:58:21 2011 +0200
+++ b/tests/test-mq-subrepo.t Tue Jul 19 13:43:53 2011 -0500
@@ -348,3 +348,14 @@
% debugsub should be empty
$ cd ..
+
+
+correctly handle subrepos with patch queues
+ $ mkrepo repo-subrepo-with-queue
+ $ mksubrepo sub
+ adding a
+ $ hg -R sub qnew sub0.diff
+ $ echo sub = sub >> .hgsub
+ $ hg add .hgsub
+ $ hg qnew 0.diff
+ committing subrepository sub