Mercurial > public > mercurial-scm > hg-stable
diff mercurial/context.py @ 31992:3e47a40d7a7a
context: possibly yield initial fctx in blockdescendants()
If initial 'fctx' has changes in line range with respect to its parents, we
yield it first. This makes 'followlines(..., descend=True)' consistent with
'descendants()' revset which yields the starting revision.
We reuse one iteration of blockancestors() which does exactly what we want.
In test-annotate.t, adjust 'startrev' in one case to cover the situation where
the starting revision does not touch specified line range.
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Fri, 14 Apr 2017 14:25:06 +0200 |
parents | 55987fc8aba1 |
children | c84c83b5df0f |
line wrap: on
line diff
--- a/mercurial/context.py Fri Apr 14 14:09:26 2017 +0200 +++ b/mercurial/context.py Fri Apr 14 14:25:06 2017 +0200 @@ -1212,6 +1212,16 @@ """Yield descendants of `fctx` with respect to the block of lines within `fromline`-`toline` range. """ + # First possibly yield 'fctx' if it has changes in range with respect to + # its parents. + try: + c, linerange1 = next(blockancestors(fctx, fromline, toline)) + except StopIteration: + pass + else: + if c == fctx: + yield c, linerange1 + diffopts = patch.diffopts(fctx._repo.ui) fl = fctx.filelog() seen = {fctx.filerev(): (fctx, (fromline, toline))}