diff -r a858d3de0d32 -r fe9db58b0b2d mercurial/subrepo.py --- a/mercurial/subrepo.py Mon Jul 07 18:45:46 2014 +0900 +++ b/mercurial/subrepo.py Fri Jun 20 00:21:19 2014 +0900 @@ -525,8 +525,14 @@ self._initrepo(r, state[0], create) def storeclean(self, path): + lock = self._repo.lock() + try: + return self._storeclean(path) + finally: + lock.release() + + def _storeclean(self, path): clean = True - lock = self._repo.lock() itercache = self._calcstorehash(path) try: for filehash in self._readstorehashcache(path): @@ -543,7 +549,6 @@ clean = False except StopIteration: pass - lock.release() return clean def _calcstorehash(self, remotepath):