diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -544,7 +544,7 @@ class svnsubrepo(abstractsubrepo): def dirty(self, ignoreupdate=False): if not self._wcchanged()[0]: - if self._wcrev() == self._state[1] and not ignoreupdate: + if self._wcrev() == self._state[1] or ignoreupdate: return False return True diff --git a/tests/test-mq-subrepo.t b/tests/test-mq-subrepo.t --- a/tests/test-mq-subrepo.t +++ b/tests/test-mq-subrepo.t @@ -345,3 +345,42 @@ handle subrepos safely on qrecord % debugsub should be empty $ cd .. + + +handle svn subrepos safely + + $ svnadmin create svn-repo-2499 + $ curpath=`pwd | tr '\\\\' /` + $ expr "$svnpath" : "\/" > /dev/null + > if [ $? -ne 0 ]; then + > curpath="/$curpath" + > fi + $ svnurl="file://$curpath/svn-repo-2499/project" + $ mkdir -p svn-project-2499/trunk + $ svn import -m 'init project' svn-project-2499 "$svnurl" + Adding svn-project-2499/trunk + + Committed revision 1. + +qnew on repo w/svn subrepo + $ mkrepo repo-2499-svn-subrepo + $ svn co "$svnurl"/trunk sub + Checked out revision 1. + $ echo 'sub = [svn]sub' >> .hgsub + $ hg add .hgsub + $ hg status -S + A .hgsub + ? sub/.svn/entries + $ hg qnew -m0 0.diff + committing subrepository sub + $ cd sub + $ echo a > a + $ svn add a + A a + $ svn st + A a + $ cd .. + $ hg status -S # doesn't show status for svn subrepos (yet) + $ hg qnew -m1 1.diff + abort: uncommitted changes in subrepository sub + [255]