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 = |
|
|
987 | clear_revs = [] | |
|
971 | 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 | 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 |
|
|
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