Show More
@@ -1065,7 +1065,9 b' def _matchfiles(repo, subset, x):' | |||||
1065 | if rev is not None: |
|
1065 | if rev is not None: | |
1066 | raise error.ParseError('_matchfiles expected at most one ' |
|
1066 | raise error.ParseError('_matchfiles expected at most one ' | |
1067 | 'revision') |
|
1067 | 'revision') | |
1068 |
if value |
|
1068 | if value == '': # empty means working directory | |
|
1069 | rev = node.wdirrev | |||
|
1070 | else: | |||
1069 | rev = value |
|
1071 | rev = value | |
1070 | elif prefix == 'd:': |
|
1072 | elif prefix == 'd:': | |
1071 | if default is not None: |
|
1073 | if default is not None: | |
@@ -1076,9 +1078,9 b' def _matchfiles(repo, subset, x):' | |||||
1076 | raise error.ParseError('invalid _matchfiles prefix: %s' % prefix) |
|
1078 | raise error.ParseError('invalid _matchfiles prefix: %s' % prefix) | |
1077 | if not default: |
|
1079 | if not default: | |
1078 | default = 'glob' |
|
1080 | default = 'glob' | |
|
1081 | hasset = any(matchmod.patkind(p) == 'set' for p in pats + inc + exc) | |||
1079 |
|
1082 | |||
1080 | m = matchmod.match(repo.root, repo.getcwd(), pats, include=inc, |
|
1083 | mcache = [None] | |
1081 | exclude=exc, ctx=repo[rev], default=default) |
|
|||
1082 |
|
1084 | |||
1083 | # This directly read the changelog data as creating changectx for all |
|
1085 | # This directly read the changelog data as creating changectx for all | |
1084 | # revisions is quite expensive. |
|
1086 | # revisions is quite expensive. | |
@@ -1089,6 +1091,14 b' def _matchfiles(repo, subset, x):' | |||||
1089 | files = repo[x].files() |
|
1091 | files = repo[x].files() | |
1090 | else: |
|
1092 | else: | |
1091 | files = getfiles(x) |
|
1093 | files = getfiles(x) | |
|
1094 | ||||
|
1095 | if not mcache[0] or (hasset and rev is None): | |||
|
1096 | r = x if rev is None else rev | |||
|
1097 | mcache[0] = matchmod.match(repo.root, repo.getcwd(), pats, | |||
|
1098 | include=inc, exclude=exc, ctx=repo[r], | |||
|
1099 | default=default) | |||
|
1100 | m = mcache[0] | |||
|
1101 | ||||
1092 | for f in files: |
|
1102 | for f in files: | |
1093 | if m(f): |
|
1103 | if m(f): | |
1094 | return True |
|
1104 | return True |
@@ -1675,7 +1675,7 b' Test falling back to slow path for non-e' | |||||
1675 | (string 'p:c'))) |
|
1675 | (string 'p:c'))) | |
1676 | <filteredset |
|
1676 | <filteredset | |
1677 | <spanset- 0:5>, |
|
1677 | <spanset- 0:5>, | |
1678 |
<matchfiles patterns=['a', 'c'], include=[] exclude=[], default='relpath', rev= |
|
1678 | <matchfiles patterns=['a', 'c'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
1679 |
|
1679 | |||
1680 | Test multiple --include/--exclude/paths |
|
1680 | Test multiple --include/--exclude/paths | |
1681 |
|
1681 | |||
@@ -1694,7 +1694,7 b' Test multiple --include/--exclude/paths' | |||||
1694 | (string 'x:e'))) |
|
1694 | (string 'x:e'))) | |
1695 | <filteredset |
|
1695 | <filteredset | |
1696 | <spanset- 0:5>, |
|
1696 | <spanset- 0:5>, | |
1697 |
<matchfiles patterns=['a', 'e'], include=['a', 'e'] exclude=['b', 'e'], default='relpath', rev= |
|
1697 | <matchfiles patterns=['a', 'e'], include=['a', 'e'] exclude=['b', 'e'], default='relpath', rev=2147483647>> | |
1698 |
|
1698 | |||
1699 | Test glob expansion of pats |
|
1699 | Test glob expansion of pats | |
1700 |
|
1700 | |||
@@ -1732,7 +1732,7 b' Test --follow on a directory' | |||||
1732 | (string 'p:dir'))) |
|
1732 | (string 'p:dir'))) | |
1733 | <filteredset |
|
1733 | <filteredset | |
1734 | <generatorsetdesc->, |
|
1734 | <generatorsetdesc->, | |
1735 |
<matchfiles patterns=['dir'], include=[] exclude=[], default='relpath', rev= |
|
1735 | <matchfiles patterns=['dir'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
1736 | $ hg up -q tip |
|
1736 | $ hg up -q tip | |
1737 |
|
1737 | |||
1738 | Test --follow on file not in parent revision |
|
1738 | Test --follow on file not in parent revision | |
@@ -1754,7 +1754,7 b' Test --follow and patterns' | |||||
1754 | (string 'p:glob:*'))) |
|
1754 | (string 'p:glob:*'))) | |
1755 | <filteredset |
|
1755 | <filteredset | |
1756 | <generatorsetdesc->, |
|
1756 | <generatorsetdesc->, | |
1757 |
<matchfiles patterns=['glob:*'], include=[] exclude=[], default='relpath', rev= |
|
1757 | <matchfiles patterns=['glob:*'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
1758 |
|
1758 | |||
1759 | Test --follow on a single rename |
|
1759 | Test --follow on a single rename | |
1760 |
|
1760 | |||
@@ -1875,7 +1875,7 b' Test "set:..." and parent revision' | |||||
1875 | (string 'p:set:copied()'))) |
|
1875 | (string 'p:set:copied()'))) | |
1876 | <filteredset |
|
1876 | <filteredset | |
1877 | <spanset- 0:7>, |
|
1877 | <spanset- 0:7>, | |
1878 |
<matchfiles patterns=['set:copied()'], include=[] exclude=[], default='relpath', rev= |
|
1878 | <matchfiles patterns=['set:copied()'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
1879 | $ testlog --include "set:copied()" |
|
1879 | $ testlog --include "set:copied()" | |
1880 | [] |
|
1880 | [] | |
1881 | (func |
|
1881 | (func | |
@@ -1886,11 +1886,13 b' Test "set:..." and parent revision' | |||||
1886 | (string 'i:set:copied()'))) |
|
1886 | (string 'i:set:copied()'))) | |
1887 | <filteredset |
|
1887 | <filteredset | |
1888 | <spanset- 0:7>, |
|
1888 | <spanset- 0:7>, | |
1889 |
<matchfiles patterns=[], include=['set:copied()'] exclude=[], default='relpath', rev= |
|
1889 | <matchfiles patterns=[], include=['set:copied()'] exclude=[], default='relpath', rev=2147483647>> | |
1890 | $ testlog -r "sort(file('set:copied()'), -rev)" |
|
1890 | $ testlog -r "sort(file('set:copied()'), -rev)" | |
1891 | ["sort(file('set:copied()'), -rev)"] |
|
1891 | ["sort(file('set:copied()'), -rev)"] | |
1892 | [] |
|
1892 | [] | |
1893 | <baseset []> |
|
1893 | <filteredset | |
|
1894 | <fullreposet- 0:7>, | |||
|
1895 | <matchfiles patterns=['set:copied()'], include=[] exclude=[], default='glob', rev=None>> | |||
1894 |
|
1896 | |||
1895 | Test --removed |
|
1897 | Test --removed | |
1896 |
|
1898 | |||
@@ -1908,7 +1910,7 b' Test --removed' | |||||
1908 | (string 'p:a'))) |
|
1910 | (string 'p:a'))) | |
1909 | <filteredset |
|
1911 | <filteredset | |
1910 | <spanset- 0:7>, |
|
1912 | <spanset- 0:7>, | |
1911 |
<matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev= |
|
1913 | <matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
1912 | $ testlog --removed --follow a |
|
1914 | $ testlog --removed --follow a | |
1913 | [] |
|
1915 | [] | |
1914 | (func |
|
1916 | (func | |
@@ -1919,7 +1921,7 b' Test --removed' | |||||
1919 | (string 'p:a'))) |
|
1921 | (string 'p:a'))) | |
1920 | <filteredset |
|
1922 | <filteredset | |
1921 | <generatorsetdesc->, |
|
1923 | <generatorsetdesc->, | |
1922 |
<matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev= |
|
1924 | <matchfiles patterns=['a'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
1923 |
|
1925 | |||
1924 | Test --patch and --stat with --follow and --follow-first |
|
1926 | Test --patch and --stat with --follow and --follow-first | |
1925 |
|
1927 | |||
@@ -2290,7 +2292,7 b' Test subdir' | |||||
2290 | (string 'p:.'))) |
|
2292 | (string 'p:.'))) | |
2291 | <filteredset |
|
2293 | <filteredset | |
2292 | <spanset- 0:9>, |
|
2294 | <spanset- 0:9>, | |
2293 |
<matchfiles patterns=['.'], include=[] exclude=[], default='relpath', rev= |
|
2295 | <matchfiles patterns=['.'], include=[] exclude=[], default='relpath', rev=2147483647>> | |
2294 | $ testlog ../b |
|
2296 | $ testlog ../b | |
2295 | [] |
|
2297 | [] | |
2296 | (func |
|
2298 | (func |
@@ -726,6 +726,20 b' bit correctly on the platform being unaw' | |||||
726 |
|
726 | |||
727 | #endif |
|
727 | #endif | |
728 |
|
728 | |||
|
729 | The fileset revset is evaluated for each revision, instead of once on wdir(), | |||
|
730 | and then patterns matched on each revision. Here, no exec bits are set in | |||
|
731 | wdir(), but a matching revision is detected. | |||
|
732 | ||||
|
733 | (Teach large2 is not an executable. Maybe this is a bug of largefiles.) | |||
|
734 | #if execbit | |||
|
735 | $ chmod -x .hglf/large2 | |||
|
736 | #endif | |||
|
737 | ||||
|
738 | $ hg files 'set:exec()' | |||
|
739 | [1] | |||
|
740 | $ hg log -qr 'file("set:exec()")' | |||
|
741 | 9:be1b433a65b1 | |||
|
742 | ||||
729 | Test a fatal error interrupting an update. Verify that status report dirty |
|
743 | Test a fatal error interrupting an update. Verify that status report dirty | |
730 | files correctly after an interrupted update. Also verify that checking all |
|
744 | files correctly after an interrupted update. Also verify that checking all | |
731 | hashes reveals it isn't clean. |
|
745 | hashes reveals it isn't clean. |
General Comments 0
You need to be logged in to leave comments.
Login now