Show More
@@ -994,24 +994,27 b' def destination(repo, subset, x):' | |||
|
994 | 994 | ) |
|
995 | 995 | |
|
996 | 996 | |
|
997 | @predicate(b'diff(pattern)', weight=110) | |
|
998 | def diff(repo, subset, x): | |
|
997 | @predicate(b'diffcontains(pattern)', weight=110) | |
|
998 | def diffcontains(repo, subset, x): | |
|
999 | 999 | """Search revision differences for when the pattern was added or removed. |
|
1000 | 1000 | |
|
1001 | 1001 | The pattern may be a substring literal or a regular expression. See |
|
1002 | 1002 | :hg:`help revisions.patterns`. |
|
1003 | 1003 | """ |
|
1004 | args = getargsdict(x, b'diff', b'pattern') | |
|
1004 | args = getargsdict(x, b'diffcontains', b'pattern') | |
|
1005 | 1005 | if b'pattern' not in args: |
|
1006 | # i18n: "diff" is a keyword | |
|
1007 | raise error.ParseError(_(b'diff takes at least 1 argument')) | |
|
1008 | ||
|
1009 | pattern = getstring(args[b'pattern'], _(b'diff requires a string pattern')) | |
|
1006 | # i18n: "diffcontains" is a keyword | |
|
1007 | raise error.ParseError(_(b'diffcontains takes at least 1 argument')) | |
|
1008 | ||
|
1009 | pattern = getstring( | |
|
1010 | args[b'pattern'], _(b'diffcontains requires a string pattern') | |
|
1011 | ) | |
|
1010 | 1012 | regexp = stringutil.substringregexp(pattern, re.M) |
|
1011 | 1013 | |
|
1012 | 1014 | # TODO: add support for file pattern and --follow. For example, |
|
1013 |
# diff(pattern[, set]) where set may be file(pattern) or |
|
|
1014 |
# and we'll eventually add a support for narrowing |
|
|
1015 | # diffcontains(pattern[, set]) where set may be file(pattern) or | |
|
1016 | # follow(pattern), and we'll eventually add a support for narrowing | |
|
1017 | # files by revset? | |
|
1015 | 1018 | fmatch = matchmod.always() |
|
1016 | 1019 | |
|
1017 | 1020 | def makefilematcher(ctx): |
@@ -1030,7 +1033,7 b' def diff(repo, subset, x):' | |||
|
1030 | 1033 | found = True |
|
1031 | 1034 | return found |
|
1032 | 1035 | |
|
1033 | return subset.filter(testdiff, condrepr=(b'<diff %r>', pattern)) | |
|
1036 | return subset.filter(testdiff, condrepr=(b'<diffcontains %r>', pattern)) | |
|
1034 | 1037 | |
|
1035 | 1038 | |
|
1036 | 1039 | @predicate(b'contentdivergent()', safe=True) |
@@ -23,13 +23,13 b' pattern error' | |||
|
23 | 23 | |
|
24 | 24 | invalid revset syntax |
|
25 | 25 | |
|
26 | $ hg log -r 'diff()' | |
|
27 | hg: parse error: diff takes at least 1 argument | |
|
26 | $ hg log -r 'diffcontains()' | |
|
27 | hg: parse error: diffcontains takes at least 1 argument | |
|
28 | 28 | [255] |
|
29 | $ hg log -r 'diff(:)' | |
|
30 | hg: parse error: diff requires a string pattern | |
|
29 | $ hg log -r 'diffcontains(:)' | |
|
30 | hg: parse error: diffcontains requires a string pattern | |
|
31 | 31 | [255] |
|
32 | $ hg log -r 'diff("re:**test**")' | |
|
32 | $ hg log -r 'diffcontains("re:**test**")' | |
|
33 | 33 | hg: parse error: invalid regular expression: nothing to repeat* (glob) |
|
34 | 34 | [255] |
|
35 | 35 | |
@@ -567,13 +567,13 b' Test wdir' | |||
|
567 | 567 | |
|
568 | 568 | revset predicate for "grep --diff" |
|
569 | 569 | |
|
570 | $ hg log -qr 'diff("re:^bl...$")' | |
|
570 | $ hg log -qr 'diffcontains("re:^bl...$")' | |
|
571 | 571 | 0:203191eb5e21 |
|
572 | $ hg log -qr 'diff("orange")' | |
|
572 | $ hg log -qr 'diffcontains("orange")' | |
|
573 | 573 | 1:7c585a21e0d1 |
|
574 | 574 | 2:11bd8bc8d653 |
|
575 | 575 | 3:e0116d3829f8 |
|
576 | $ hg log -qr '2:0 & diff("orange")' | |
|
576 | $ hg log -qr '2:0 & diffcontains("orange")' | |
|
577 | 577 | 2:11bd8bc8d653 |
|
578 | 578 | 1:7c585a21e0d1 |
|
579 | 579 |
General Comments 0
You need to be logged in to leave comments.
Login now