Mercurial > public > mercurial-scm > hg
comparison mercurial/cmdutil.py @ 21877:dbbae63865a6
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 16 Jul 2014 17:35:04 -0500 |
parents | abae1eb695c0 584bbfd1b50d |
children | e2530d4a47c1 |
comparison
equal
deleted
inserted
replaced
21875:33020e87f8c5 | 21877:dbbae63865a6 |
---|---|
1486 if stopiteration: | 1486 if stopiteration: |
1487 break | 1487 break |
1488 | 1488 |
1489 return iterate() | 1489 return iterate() |
1490 | 1490 |
1491 def _makelogfilematcher(repo, pats, followfirst): | 1491 def _makelogfilematcher(repo, files, followfirst): |
1492 # When displaying a revision with --patch --follow FILE, we have | 1492 # When displaying a revision with --patch --follow FILE, we have |
1493 # to know which file of the revision must be diffed. With | 1493 # to know which file of the revision must be diffed. With |
1494 # --follow, we want the names of the ancestors of FILE in the | 1494 # --follow, we want the names of the ancestors of FILE in the |
1495 # revision, stored in "fcache". "fcache" is populated by | 1495 # revision, stored in "fcache". "fcache" is populated by |
1496 # reproducing the graph traversal already done by --follow revset | 1496 # reproducing the graph traversal already done by --follow revset |
1500 fcacheready = [False] | 1500 fcacheready = [False] |
1501 pctx = repo['.'] | 1501 pctx = repo['.'] |
1502 wctx = repo[None] | 1502 wctx = repo[None] |
1503 | 1503 |
1504 def populate(): | 1504 def populate(): |
1505 for fn in pats: | 1505 for fn in files: |
1506 for i in ((pctx[fn],), pctx[fn].ancestors(followfirst=followfirst)): | 1506 for i in ((pctx[fn],), pctx[fn].ancestors(followfirst=followfirst)): |
1507 for c in i: | 1507 for c in i: |
1508 fcache.setdefault(c.linkrev(), set()).add(c.path()) | 1508 fcache.setdefault(c.linkrev(), set()).add(c.path()) |
1509 | 1509 |
1510 def filematcher(rev): | 1510 def filematcher(rev): |
1625 opts['_patslog'] = list(pats) | 1625 opts['_patslog'] = list(pats) |
1626 | 1626 |
1627 filematcher = None | 1627 filematcher = None |
1628 if opts.get('patch') or opts.get('stat'): | 1628 if opts.get('patch') or opts.get('stat'): |
1629 if follow: | 1629 if follow: |
1630 filematcher = _makelogfilematcher(repo, pats, followfirst) | 1630 # _makelogfilematcher expects its files argument to be relative to |
1631 # the repo root, so use match.files(), not pats. | |
1632 filematcher = _makelogfilematcher(repo, match.files(), followfirst) | |
1631 else: | 1633 else: |
1632 filematcher = lambda rev: match | 1634 filematcher = lambda rev: match |
1633 | 1635 |
1634 expr = [] | 1636 expr = [] |
1635 for op, val in opts.iteritems(): | 1637 for op, val in opts.iteritems(): |