Show More
@@ -40,10 +40,34 b' def computemutable(repo):' | |||||
40 | return frozenset(repo.revs('draft() + secret()')) |
|
40 | return frozenset(repo.revs('draft() + secret()')) | |
41 | return frozenset() |
|
41 | return frozenset() | |
42 |
|
42 | |||
|
43 | def computeimpactable(repo): | |||
|
44 | """Everything impactable by mutable revision | |||
|
45 | ||||
|
46 | The mutable filter still have some chance to get invalidated. This will | |||
|
47 | happen when: | |||
|
48 | ||||
|
49 | - you garbage collect hidden changeset, | |||
|
50 | - public phase is moved backward, | |||
|
51 | - something is changed in the filtering (this could be fixed) | |||
|
52 | ||||
|
53 | This filter out any mutable changeset and any public changeset that may be | |||
|
54 | impacted by something happening to a mutable revision. | |||
|
55 | ||||
|
56 | This is achieved by filtered everything with a revision number egal or | |||
|
57 | higher than the first mutable changeset is filtered.""" | |||
|
58 | assert not repo.changelog.filteredrevs | |||
|
59 | cl = repo.changelog | |||
|
60 | firstmutable = len(cl) | |||
|
61 | for roots in repo._phasecache.phaseroots[1:]: | |||
|
62 | if roots: | |||
|
63 | firstmutable = min(firstmutable, min(cl.rev(r) for r in roots)) | |||
|
64 | return frozenset(xrange(firstmutable, len(cl))) | |||
|
65 | ||||
43 | # function to compute filtered set |
|
66 | # function to compute filtered set | |
44 | filtertable = {'hidden': computehidden, |
|
67 | filtertable = {'hidden': computehidden, | |
45 | 'unserved': computeunserved, |
|
68 | 'unserved': computeunserved, | |
46 |
'mutable': computemutable |
|
69 | 'mutable': computemutable, | |
|
70 | 'impactable': computeimpactable} | |||
47 | ### Nearest subset relation |
|
71 | ### Nearest subset relation | |
48 | # Nearest subset of filter X is a filter Y so that: |
|
72 | # Nearest subset of filter X is a filter Y so that: | |
49 | # * Y is included in X, |
|
73 | # * Y is included in X, | |
@@ -52,7 +76,8 b" filtertable = {'hidden': computehidden," | |||||
52 | # the ordering may be partial |
|
76 | # the ordering may be partial | |
53 | subsettable = {None: 'hidden', |
|
77 | subsettable = {None: 'hidden', | |
54 | 'hidden': 'unserved', |
|
78 | 'hidden': 'unserved', | |
55 |
'unserved': 'mutable' |
|
79 | 'unserved': 'mutable', | |
|
80 | 'mutable': 'impactable'} | |||
56 |
|
81 | |||
57 | def filteredrevs(repo, filtername): |
|
82 | def filteredrevs(repo, filtername): | |
58 | """returns set of filtered revision for this filter name""" |
|
83 | """returns set of filtered revision for this filter name""" |
@@ -111,7 +111,7 b' group can still write everything' | |||||
111 | 00770 ../push/.hg/ |
|
111 | 00770 ../push/.hg/ | |
112 | 00660 ../push/.hg/00changelog.i |
|
112 | 00660 ../push/.hg/00changelog.i | |
113 | 00770 ../push/.hg/cache/ |
|
113 | 00770 ../push/.hg/cache/ | |
114 |
00660 ../push/.hg/cache/branchheads- |
|
114 | 00660 ../push/.hg/cache/branchheads-impactable | |
115 | 00660 ../push/.hg/requires |
|
115 | 00660 ../push/.hg/requires | |
116 | 00770 ../push/.hg/store/ |
|
116 | 00770 ../push/.hg/store/ | |
117 | 00660 ../push/.hg/store/00changelog.i |
|
117 | 00660 ../push/.hg/store/00changelog.i |
@@ -176,7 +176,7 b' Pushing just rev 0:' | |||||
176 | $ hg push -qr 0 ../target |
|
176 | $ hg push -qr 0 ../target | |
177 |
|
177 | |||
178 | $ (cd ../target/; listbranchcaches) |
|
178 | $ (cd ../target/; listbranchcaches) | |
179 |
=== .hg/cache/branchheads- |
|
179 | === .hg/cache/branchheads-impactable === | |
180 | db01e8ea3388fd3c7c94e1436ea2bd6a53d581c5 0 |
|
180 | db01e8ea3388fd3c7c94e1436ea2bd6a53d581c5 0 | |
181 | db01e8ea3388fd3c7c94e1436ea2bd6a53d581c5 default |
|
181 | db01e8ea3388fd3c7c94e1436ea2bd6a53d581c5 default | |
182 |
|
182 | |||
@@ -185,7 +185,7 b' Pushing everything:' | |||||
185 | $ hg push -qf ../target |
|
185 | $ hg push -qf ../target | |
186 |
|
186 | |||
187 | $ (cd ../target/; listbranchcaches) |
|
187 | $ (cd ../target/; listbranchcaches) | |
188 |
=== .hg/cache/branchheads- |
|
188 | === .hg/cache/branchheads-impactable === | |
189 | adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 4 |
|
189 | adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 4 | |
190 | 1c28f494dae69a2f8fc815059d257eccf3fcfe75 default |
|
190 | 1c28f494dae69a2f8fc815059d257eccf3fcfe75 default | |
191 | adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 foo |
|
191 | adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6 foo |
General Comments 0
You need to be logged in to leave comments.
Login now