Show More
@@ -185,7 +185,6 b' class localrepository(repo.repository):' | |||
|
185 | 185 | def _phaseroots(self): |
|
186 | 186 | self._dirtyphases = False |
|
187 | 187 | phaseroots = phases.readroots(self) |
|
188 | phases.filterunknown(self, phaseroots) | |
|
189 | 188 | return phaseroots |
|
190 | 189 | |
|
191 | 190 | @propertycache |
@@ -106,6 +106,24 b' allphases = public, draft, secret = rang' | |||
|
106 | 106 | trackedphases = allphases[1:] |
|
107 | 107 | phasenames = ['public', 'draft', 'secret'] |
|
108 | 108 | |
|
109 | def _filterunknown(ui, changelog, phaseroots): | |
|
110 | """remove unknown nodes from the phase boundary | |
|
111 | ||
|
112 | Nothing is lost as unknown nodes only hold data for their descendants | |
|
113 | """ | |
|
114 | updated = False | |
|
115 | nodemap = changelog.nodemap # to filter unknown nodes | |
|
116 | for phase, nodes in enumerate(phaseroots): | |
|
117 | missing = [node for node in nodes if node not in nodemap] | |
|
118 | if missing: | |
|
119 | for mnode in missing: | |
|
120 | ui.debug( | |
|
121 | 'removing unknown node %s from %i-phase boundary\n' | |
|
122 | % (short(mnode), phase)) | |
|
123 | nodes.symmetric_difference_update(missing) | |
|
124 | updated = True | |
|
125 | return updated | |
|
126 | ||
|
109 | 127 | def readroots(repo): |
|
110 | 128 | """Read phase roots from disk""" |
|
111 | 129 | roots = [set() for i in allphases] |
@@ -123,6 +141,8 b' def readroots(repo):' | |||
|
123 | 141 | for f in repo._phasedefaults: |
|
124 | 142 | roots = f(repo, roots) |
|
125 | 143 | repo._dirtyphases = True |
|
144 | if _filterunknown(repo.ui, repo.changelog, roots): | |
|
145 | repo._dirtyphases = True | |
|
126 | 146 | return roots |
|
127 | 147 | |
|
128 | 148 | def writeroots(repo): |
@@ -136,24 +156,6 b' def writeroots(repo):' | |||
|
136 | 156 | finally: |
|
137 | 157 | f.close() |
|
138 | 158 | |
|
139 | def filterunknown(repo, phaseroots=None): | |
|
140 | """remove unknown nodes from the phase boundary | |
|
141 | ||
|
142 | no data is lost as unknown node only old data for their descentants | |
|
143 | """ | |
|
144 | if phaseroots is None: | |
|
145 | phaseroots = repo._phaseroots | |
|
146 | nodemap = repo.changelog.nodemap # to filter unknown nodes | |
|
147 | for phase, nodes in enumerate(phaseroots): | |
|
148 | missing = [node for node in nodes if node not in nodemap] | |
|
149 | if missing: | |
|
150 | for mnode in missing: | |
|
151 | repo.ui.debug( | |
|
152 | 'removing unknown node %s from %i-phase boundary\n' | |
|
153 | % (short(mnode), phase)) | |
|
154 | nodes.symmetric_difference_update(missing) | |
|
155 | repo._dirtyphases = True | |
|
156 | ||
|
157 | 159 | def advanceboundary(repo, targetphase, nodes): |
|
158 | 160 | """Add nodes to a phase changing other nodes phases if necessary. |
|
159 | 161 |
General Comments 0
You need to be logged in to leave comments.
Login now