Show More
@@ -17,7 +17,7 b' This module implements most phase logic ' | |||||
17 | Basic Concept |
|
17 | Basic Concept | |
18 | ============= |
|
18 | ============= | |
19 |
|
19 | |||
20 |
A 'changeset phase |
|
20 | A 'changeset phase' is an indicator that tells us how a changeset is | |
21 | manipulated and communicated. The details of each phase is described below, |
|
21 | manipulated and communicated. The details of each phase is described below, | |
22 | here we describe the properties they have in common. |
|
22 | here we describe the properties they have in common. | |
23 |
|
23 | |||
@@ -36,25 +36,23 b' These phases share a hierarchy of traits' | |||||
36 | draft: X |
|
36 | draft: X | |
37 | secret: |
|
37 | secret: | |
38 |
|
38 | |||
39 |
|
|
39 | Local commits are draft by default. | |
40 |
|
40 | |||
41 |
Phase |
|
41 | Phase Movement and Exchange | |
42 |
=========================== |
|
42 | =========================== | |
43 |
|
43 | |||
44 |
Phase data |
|
44 | Phase data is exchanged by pushkey on pull and push. Some servers have a | |
45 |
publish option set, we call |
|
45 | publish option set, we call such a server a "publishing server". Pushing a | |
46 | draft changeset publish. |
|
46 | draft changeset to a publishing server changes the phase to public. | |
47 |
|
47 | |||
48 | A small list of fact/rules define the exchange of phase: |
|
48 | A small list of fact/rules define the exchange of phase: | |
49 |
|
49 | |||
50 | * old client never changes server states |
|
50 | * old client never changes server states | |
51 | * pull never changes server states |
|
51 | * pull never changes server states | |
52 | * publish and old server csets are seen as public by client |
|
52 | * publish and old server changesets are seen as public by client | |
|
53 | * any secret changeset seen in another repository is lowered to at least draft | |||
53 |
|
54 | |||
54 | * Any secret changeset seens in another repository is lowered to at least draft |
|
55 | Here is the final table summing up the 49 possible use cases of phase exchange: | |
55 |
|
||||
56 |
|
||||
57 | Here is the final table summing up the 49 possible usecase of phase exchange: |
|
|||
58 |
|
56 | |||
59 | server |
|
57 | server | |
60 | old publish non-publish |
|
58 | old publish non-publish | |
@@ -81,7 +79,7 b' Legend:' | |||||
81 | * N = new/not present, |
|
79 | * N = new/not present, | |
82 | * P = public, |
|
80 | * P = public, | |
83 | * D = draft, |
|
81 | * D = draft, | |
84 |
* X = not tracked (i |
|
82 | * X = not tracked (i.e., the old client or server has no internal way of | |
85 | recording the phase.) |
|
83 | recording the phase.) | |
86 |
|
84 | |||
87 | passive = only pushes |
|
85 | passive = only pushes | |
@@ -92,7 +90,7 b' Legend:' | |||||
92 | "When a new client pushes a draft changeset (D) to a publishing server |
|
90 | "When a new client pushes a draft changeset (D) to a publishing server | |
93 | where it's not present (N), it's marked public on both sides (P/P)." |
|
91 | where it's not present (N), it's marked public on both sides (P/P)." | |
94 |
|
92 | |||
95 |
Note: old client behave as publish server with |
|
93 | Note: old client behave as a publishing server with draft only content | |
96 | - other people see it as public |
|
94 | - other people see it as public | |
97 | - content is pushed as draft |
|
95 | - content is pushed as draft | |
98 |
|
96 | |||
@@ -110,7 +108,7 b" phasenames = ['public', 'draft', 'secret" | |||||
110 | def _filterunknown(ui, changelog, phaseroots): |
|
108 | def _filterunknown(ui, changelog, phaseroots): | |
111 | """remove unknown nodes from the phase boundary |
|
109 | """remove unknown nodes from the phase boundary | |
112 |
|
110 | |||
113 | Nothing is lost as unknown nodes only hold data for their descendants |
|
111 | Nothing is lost as unknown nodes only hold data for their descendants. | |
114 | """ |
|
112 | """ | |
115 | updated = False |
|
113 | updated = False | |
116 | nodemap = changelog.nodemap # to filter unknown nodes |
|
114 | nodemap = changelog.nodemap # to filter unknown nodes | |
@@ -282,7 +280,7 b' def retractboundary(repo, targetphase, n' | |||||
282 | repo._phasecache.replace(phcache) |
|
280 | repo._phasecache.replace(phcache) | |
283 |
|
281 | |||
284 | def listphases(repo): |
|
282 | def listphases(repo): | |
285 |
"""List phases root for seriali |
|
283 | """List phases root for serialization over pushkey""" | |
286 | keys = {} |
|
284 | keys = {} | |
287 | value = '%i' % draft |
|
285 | value = '%i' % draft | |
288 | for root in repo._phasecache.phaseroots[draft]: |
|
286 | for root in repo._phasecache.phaseroots[draft]: |
General Comments 0
You need to be logged in to leave comments.
Login now