author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Thu, 23 Feb 2023 19:06:24 +0100 | |
changeset 50198 | a6a8946d5173 |
parent 43632 | 2e017696181f |
permissions | -rw-r--r-- |
31280
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 |
The censor system allows retroactively removing content from |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 |
files. Actually censoring a node requires using the censor extension, |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 |
but the functionality for handling censored nodes is partially in core. |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 |
|
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 |
Censored nodes in a filelog have the flag ``REVIDX_ISCENSORED`` set, |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 |
and the contents of the censored node are replaced with a censor |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
tombstone. For historical reasons, the tombstone is packed in the |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 |
filelog metadata field ``censored``. This allows censored nodes to be |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 |
(mostly) safely transmitted through old formats like changegroup |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 |
versions 1 and 2. When using changegroup formats older than 3, the |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
11 |
receiver is required to re-add the ``REVIDX_ISCENSORED`` flag when |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
12 |
storing the revision. This depends on the ``censored`` metadata key |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 |
never being used for anything other than censoring revisions, which is |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 |
true as of January 2017. Note that the revlog flag is the |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
15 |
authoritative marker of a censored node: the tombstone should only be |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 |
consulted when looking for a reason a node was censored or when revlog |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
17 |
flags are unavailable as mentioned above. |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 |
|
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 |
The tombstone data is a free-form string. It's expected that users of |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
20 |
censor will want to record the reason for censoring a node in the |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 |
tombstone. Censored nodes must be able to fit in the size of the |
1b699a208cee
internals: add some brief documentation about censor
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 |
content being censored. |