[PATCH STABLE] log: do not use exact matcher for --patch --follow without file (issue4319)

Siddharth Agarwal sid at less-broken.com
Fri Aug 1 11:38:31 CDT 2014


On 08/01/2014 06:08 AM, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1406896616 -32400
> #      Fri Aug 01 21:36:56 2014 +0900
> # Branch stable
> # Node ID be94ed4baa5d807c3c934317d99912c2ab0d86bf
> # Parent  fd7839d1107dbc5523222fac5d5971da4939cfe7
> log: do not use exact matcher for --patch --follow without file (issue4319)

LGTM. Thanks for fixing this!

>
> e2530d4a47c1 is valid only if file argument is specified.  If no pattern
> specified, it can simply fall back to the original matcher.
>
> diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py
> +++ b/mercurial/cmdutil.py
> @@ -1629,7 +1629,7 @@ def _makelogrevset(repo, pats, opts, rev
>   
>       filematcher = None
>       if opts.get('patch') or opts.get('stat'):
> -        if follow:
> +        if follow and not match.always():
>               # _makelogfilematcher expects its files argument to be relative to
>               # the repo root, so use match.files(), not pats.
>               filematcher = _makelogfilematcher(repo, match.files(), followfirst)
> diff --git a/tests/test-log.t b/tests/test-log.t
> --- a/tests/test-log.t
> +++ b/tests/test-log.t
> @@ -260,6 +260,98 @@ log -pf b inside dir
>     +a
>     
>   
> +log -pf, but no args
> +
> +  $ hg log -pf
> +  changeset:   3:2ca5ba701980
> +  user:        test
> +  date:        Thu Jan 01 00:00:04 1970 +0000
> +  summary:     d
> +
> +  diff -r f8954cd4dc1f -r 2ca5ba701980 a
> +  --- a/a	Thu Jan 01 00:00:03 1970 +0000
> +  +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +  @@ -1,1 +0,0 @@
> +  -a
> +  diff -r f8954cd4dc1f -r 2ca5ba701980 b
> +  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +  +++ b/b	Thu Jan 01 00:00:04 1970 +0000
> +  @@ -0,0 +1,1 @@
> +  +a
> +  diff -r f8954cd4dc1f -r 2ca5ba701980 d
> +  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +  +++ b/d	Thu Jan 01 00:00:04 1970 +0000
> +  @@ -0,0 +1,1 @@
> +  +a
> +  diff -r f8954cd4dc1f -r 2ca5ba701980 g
> +  --- a/g	Thu Jan 01 00:00:03 1970 +0000
> +  +++ b/g	Thu Jan 01 00:00:04 1970 +0000
> +  @@ -1,2 +1,2 @@
> +   f
> +  -g
> +  +f
> +
> +  changeset:   2:f8954cd4dc1f
> +  user:        test
> +  date:        Thu Jan 01 00:00:03 1970 +0000
> +  summary:     c
> +
> +  diff -r d89b0a12d229 -r f8954cd4dc1f b
> +  --- a/b	Thu Jan 01 00:00:02 1970 +0000
> +  +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +  @@ -1,1 +0,0 @@
> +  -a
> +  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
> +  diff -r d89b0a12d229 -r f8954cd4dc1f f
> +  --- a/f	Thu Jan 01 00:00:02 1970 +0000
> +  +++ b/f	Thu Jan 01 00:00:03 1970 +0000
> +  @@ -1,1 +1,2 @@
> +   f
> +  +f
> +  diff -r d89b0a12d229 -r f8954cd4dc1f g
> +  --- a/g	Thu Jan 01 00:00:02 1970 +0000
> +  +++ b/g	Thu Jan 01 00:00:03 1970 +0000
> +  @@ -1,1 +1,2 @@
> +   f
> +  +g
> +
> +  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
> +  diff -r 9161b9aeaf16 -r d89b0a12d229 g
> +  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +  +++ b/g	Thu Jan 01 00:00:02 1970 +0000
> +  @@ -0,0 +1,1 @@
> +  +f
> +
> +  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
> +  diff -r 000000000000 -r 9161b9aeaf16 f
> +  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +  +++ b/f	Thu Jan 01 00:00:01 1970 +0000
> +  @@ -0,0 +1,1 @@
> +  +f
> +
> +
>   log -vf dir/b
>   
>     $ hg log -vf dir/b
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list