##// END OF EJS Templates
perf: add a --update-last flag to perf::tags...
marmoute -
r51833:98a7f325 stable
parent child Browse files
Show More
@@ -931,6 +931,13 b' def _default_forget_fnodes(repo, revs):'
931 931 b'clear on disk file node cache (DESTRUCTIVE),',
932 932 b'REVS',
933 933 ),
934 (
935 b'',
936 b'update-last',
937 b'',
938 b'simulate an update over the last N revisions (DESTRUCTIVE),',
939 b'N',
940 ),
934 941 ],
935 942 )
936 943 def perftags(ui, repo, **opts):
@@ -950,6 +957,16 b' def perftags(ui, repo, **opts):'
950 957 clear_fnode = opts[b'clear_fnode_cache_all']
951 958
952 959 clear_fnode_revs = opts[b'clear_fnode_cache_rev']
960 update_last_str = opts[b'update_last']
961 update_last = None
962 if update_last_str:
963 try:
964 update_last = int(update_last_str)
965 except ValueError:
966 msg = b'could not parse value for update-last: "%s"'
967 msg %= update_last_str
968 hint = b'value should be an integer'
969 raise error.Abort(msg, hint=hint)
953 970
954 971 clear_disk_fn = getattr(
955 972 tags,
@@ -967,11 +984,32 b' def perftags(ui, repo, **opts):'
967 984 _default_forget_fnodes,
968 985 )
969 986
970 clear_revs = None
987 clear_revs = []
971 988 if clear_fnode_revs:
972 clear_revs = scmutil.revrange(repo, clear_fnode_revs)
989 clear_revs.extends(scmutil.revrange(repo, clear_fnode_revs))
990
991 if update_last:
992 revset = b'last(all(), %d)' % update_last
993 last_revs = repo.unfiltered().revs(revset)
994 clear_revs.extend(last_revs)
995
996 from mercurial import repoview
997
998 rev_filter = {(b'experimental', b'extra-filter-revs'): revset}
999 with repo.ui.configoverride(rev_filter, source=b"perf"):
1000 filter_id = repoview.extrafilter(repo.ui)
1001
1002 filter_name = b'%s%%%s' % (repo.filtername, filter_id)
1003 pre_repo = repo.filtered(filter_name)
1004 pre_repo.tags() # warm the cache
1005 old_tags_path = repo.cachevfs.join(tags._filename(pre_repo))
1006 new_tags_path = repo.cachevfs.join(tags._filename(repo))
1007
1008 clear_revs = sorted(set(clear_revs))
973 1009
974 1010 def s():
1011 if update_last:
1012 util.copyfile(old_tags_path, new_tags_path)
975 1013 if clearrevlogs:
976 1014 clearchangelog(repo)
977 1015 clearfilecache(repo.unfiltered(), 'manifest')
@@ -979,7 +1017,7 b' def perftags(ui, repo, **opts):'
979 1017 clear_disk_fn(repo)
980 1018 if clear_fnode:
981 1019 clear_fnodes_fn(repo)
982 elif clear_revs is not None:
1020 elif clear_revs:
983 1021 clear_fnodes_rev_fn(repo, clear_revs)
984 1022 repocleartagscache()
985 1023
General Comments 0
You need to be logged in to leave comments. Login now