Show More
@@ -931,6 +931,13 b' def _default_forget_fnodes(repo, revs):' | |||||
931 | b'clear on disk file node cache (DESTRUCTIVE),', |
|
931 | b'clear on disk file node cache (DESTRUCTIVE),', | |
932 | b'REVS', |
|
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 | def perftags(ui, repo, **opts): |
|
943 | def perftags(ui, repo, **opts): | |
@@ -950,6 +957,16 b' def perftags(ui, repo, **opts):' | |||||
950 | clear_fnode = opts[b'clear_fnode_cache_all'] |
|
957 | clear_fnode = opts[b'clear_fnode_cache_all'] | |
951 |
|
958 | |||
952 | clear_fnode_revs = opts[b'clear_fnode_cache_rev'] |
|
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 | clear_disk_fn = getattr( |
|
971 | clear_disk_fn = getattr( | |
955 | tags, |
|
972 | tags, | |
@@ -967,11 +984,32 b' def perftags(ui, repo, **opts):' | |||||
967 | _default_forget_fnodes, |
|
984 | _default_forget_fnodes, | |
968 | ) |
|
985 | ) | |
969 |
|
986 | |||
970 |
clear_revs = |
|
987 | clear_revs = [] | |
971 | if clear_fnode_revs: |
|
988 | if clear_fnode_revs: | |
972 |
clear_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 | def s(): |
|
1010 | def s(): | |
|
1011 | if update_last: | |||
|
1012 | util.copyfile(old_tags_path, new_tags_path) | |||
975 | if clearrevlogs: |
|
1013 | if clearrevlogs: | |
976 | clearchangelog(repo) |
|
1014 | clearchangelog(repo) | |
977 | clearfilecache(repo.unfiltered(), 'manifest') |
|
1015 | clearfilecache(repo.unfiltered(), 'manifest') | |
@@ -979,7 +1017,7 b' def perftags(ui, repo, **opts):' | |||||
979 | clear_disk_fn(repo) |
|
1017 | clear_disk_fn(repo) | |
980 | if clear_fnode: |
|
1018 | if clear_fnode: | |
981 | clear_fnodes_fn(repo) |
|
1019 | clear_fnodes_fn(repo) | |
982 |
elif clear_revs |
|
1020 | elif clear_revs: | |
983 | clear_fnodes_rev_fn(repo, clear_revs) |
|
1021 | clear_fnodes_rev_fn(repo, clear_revs) | |
984 | repocleartagscache() |
|
1022 | repocleartagscache() | |
985 |
|
1023 |
General Comments 0
You need to be logged in to leave comments.
Login now