Mercurial > hg
changeset 21876:584bbfd1b50d stable
log: make --patch --follow work inside a subdirectory
Previously, the 'patch' code for hg log --patch --follow would try to resolve
patterns relative to the repository root rather than the current working
directory. Fix that by using match.files instead of pats, as done elsewhere
nearby.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Sat, 12 Jul 2014 02:23:17 -0700 |
parents | 3420346174b1 |
children | dbbae63865a6 6c36dc6cd61a |
files | mercurial/cmdutil.py tests/test-log.t |
diffstat | 2 files changed, 42 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Mon Jul 14 23:33:59 2014 +0900 +++ b/mercurial/cmdutil.py Sat Jul 12 02:23:17 2014 -0700 @@ -1457,7 +1457,7 @@ return iterate() -def _makelogfilematcher(repo, pats, followfirst): +def _makelogfilematcher(repo, files, followfirst): # When displaying a revision with --patch --follow FILE, we have # to know which file of the revision must be diffed. With # --follow, we want the names of the ancestors of FILE in the @@ -1471,7 +1471,7 @@ wctx = repo[None] def populate(): - for fn in pats: + for fn in files: for i in ((pctx[fn],), pctx[fn].ancestors(followfirst=followfirst)): for c in i: fcache.setdefault(c.linkrev(), set()).add(c.path()) @@ -1596,7 +1596,9 @@ filematcher = None if opts.get('patch') or opts.get('stat'): if follow: - filematcher = _makelogfilematcher(repo, pats, followfirst) + # _makelogfilematcher expects its files argument to be relative to + # the repo root, so use match.files(), not pats. + filematcher = _makelogfilematcher(repo, match.files(), followfirst) else: filematcher = lambda rev: match
--- a/tests/test-log.t Mon Jul 14 23:33:59 2014 +0900 +++ b/tests/test-log.t Sat Jul 12 02:23:17 2014 -0700 @@ -223,6 +223,43 @@ +a +log -pf b inside dir + + $ hg --cwd=dir log -pf b + changeset: 2:f8954cd4dc1f + user: test + date: Thu Jan 01 00:00:03 1970 +0000 + summary: c + + diff -r d89b0a12d229 -r f8954cd4dc1f dir/b + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/dir/b Thu Jan 01 00:00:03 1970 +0000 + @@ -0,0 +1,1 @@ + +a + + changeset: 1:d89b0a12d229 + user: test + date: Thu Jan 01 00:00:02 1970 +0000 + summary: b + + diff -r 9161b9aeaf16 -r d89b0a12d229 b + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/b Thu Jan 01 00:00:02 1970 +0000 + @@ -0,0 +1,1 @@ + +a + + changeset: 0:9161b9aeaf16 + user: test + date: Thu Jan 01 00:00:01 1970 +0000 + summary: a + + diff -r 000000000000 -r 9161b9aeaf16 a + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/a Thu Jan 01 00:00:01 1970 +0000 + @@ -0,0 +1,1 @@ + +a + + log -vf dir/b $ hg log -vf dir/b