##// END OF EJS Templates
perf: add a `--clear-fnode-cache-rev` argument to perf::tags...
marmoute -
r51832:e4c4adb6 stable
parent child Browse files
Show More
@@ -894,6 +894,19 b' def _default_clear_on_disk_tags_fnodes_c'
894 repo.cachevfs.tryunlink(tags._fnodescachefile)
894 repo.cachevfs.tryunlink(tags._fnodescachefile)
895
895
896
896
897 def _default_forget_fnodes(repo, revs):
898 """function used by the perf extension to prune some entries from the
899 fnodes cache"""
900 from mercurial import tags
901
902 missing_1 = b'\xff' * 4
903 missing_2 = b'\xff' * 20
904 cache = tags.hgtagsfnodescache(repo.unfiltered())
905 for r in revs:
906 cache._writeentry(r * tags._fnodesrecsize, missing_1, missing_2)
907 cache.write()
908
909
897 @command(
910 @command(
898 b'perf::tags|perftags',
911 b'perf::tags|perftags',
899 formatteropts
912 formatteropts
@@ -907,10 +920,17 b' def _default_clear_on_disk_tags_fnodes_c'
907 ),
920 ),
908 (
921 (
909 b'',
922 b'',
910 b'clear-fnode-cache',
923 b'clear-fnode-cache-all',
911 False,
924 False,
912 b'clear on disk file node cache (DESTRUCTIVE),',
925 b'clear on disk file node cache (DESTRUCTIVE),',
913 ),
926 ),
927 (
928 b'',
929 b'clear-fnode-cache-rev',
930 [],
931 b'clear on disk file node cache (DESTRUCTIVE),',
932 b'REVS',
933 ),
914 ],
934 ],
915 )
935 )
916 def perftags(ui, repo, **opts):
936 def perftags(ui, repo, **opts):
@@ -927,7 +947,9 b' def perftags(ui, repo, **opts):'
927 repocleartagscache = repocleartagscachefunc(repo)
947 repocleartagscache = repocleartagscachefunc(repo)
928 clearrevlogs = opts[b'clear_revlogs']
948 clearrevlogs = opts[b'clear_revlogs']
929 clear_disk = opts[b'clear_on_disk_cache']
949 clear_disk = opts[b'clear_on_disk_cache']
930 clear_fnode = opts[b'clear_fnode_cache']
950 clear_fnode = opts[b'clear_fnode_cache_all']
951
952 clear_fnode_revs = opts[b'clear_fnode_cache_rev']
931
953
932 clear_disk_fn = getattr(
954 clear_disk_fn = getattr(
933 tags,
955 tags,
@@ -939,6 +961,15 b' def perftags(ui, repo, **opts):'
939 "clear_cache_fnodes",
961 "clear_cache_fnodes",
940 _default_clear_on_disk_tags_fnodes_cache,
962 _default_clear_on_disk_tags_fnodes_cache,
941 )
963 )
964 clear_fnodes_rev_fn = getattr(
965 tags,
966 "forget_fnodes",
967 _default_forget_fnodes,
968 )
969
970 clear_revs = None
971 if clear_fnode_revs:
972 clear_revs = scmutil.revrange(repo, clear_fnode_revs)
942
973
943 def s():
974 def s():
944 if clearrevlogs:
975 if clearrevlogs:
@@ -948,6 +979,8 b' def perftags(ui, repo, **opts):'
948 clear_disk_fn(repo)
979 clear_disk_fn(repo)
949 if clear_fnode:
980 if clear_fnode:
950 clear_fnodes_fn(repo)
981 clear_fnodes_fn(repo)
982 elif clear_revs is not None:
983 clear_fnodes_rev_fn(repo, clear_revs)
951 repocleartagscache()
984 repocleartagscache()
952
985
953 def t():
986 def t():
@@ -920,3 +920,14 b' def clear_cache_on_disk(repo):'
920 def clear_cache_fnodes(repo):
920 def clear_cache_fnodes(repo):
921 """function used by the perf extension to clear "file node cache"""
921 """function used by the perf extension to clear "file node cache"""
922 repo.cachevfs.tryunlink(_filename(repo))
922 repo.cachevfs.tryunlink(_filename(repo))
923
924
925 def forget_fnodes(repo, revs):
926 """function used by the perf extension to prune some entries from the fnodes
927 cache"""
928 missing_1 = b'\xff' * 4
929 missing_2 = b'\xff' * 20
930 cache = hgtagsfnodescache(repo.unfiltered())
931 for r in revs:
932 cache._writeentry(r * _fnodesrecsize, missing_1, missing_2)
933 cache.write()
General Comments 0
You need to be logged in to leave comments. Login now