# HG changeset patch # User Matt Mackall # Date 1257633103 21600 # Node ID eccc8aacd6f953ce0ccdad28e682186ac7cf4a52 # Parent 1ee085511b892dc388e2de8a45df6890c7ad4a6d subrepo: do a linear update when appropriate diff -r 1ee085511b89 -r eccc8aacd6f9 mercurial/subrepo.py --- a/mercurial/subrepo.py Sat Nov 07 16:30:42 2009 -0600 +++ b/mercurial/subrepo.py Sat Nov 07 16:31:43 2009 -0600 @@ -200,7 +200,12 @@ def merge(self, state): self._get(state) - hg.merge(self._repo, state[1], remind=False) + cur = self._repo['.'] + dst = self._repo[state[1]] + if dst.ancestor(cur) == cur: + hg.update(self._repo, state[1]) + else: + hg.merge(self._repo, state[1], remind=False) def push(self, force): # push subrepos depth-first for coherent ordering