# HG changeset patch # User Matt Mackall # Date 2009-11-07 22:31:43 # Node ID eccc8aacd6f953ce0ccdad28e682186ac7cf4a52 # Parent 1ee085511b892dc388e2de8a45df6890c7ad4a6d subrepo: do a linear update when appropriate diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -200,7 +200,12 @@ class hgsubrepo(object): 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