Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch fpp Excluding Merge-Ins
This is equivalent to a diff from fc8d476aca to 2194b4d13b
|
2024-06-25
| ||
| 11:59 | Typo and clarity fixes to the new fpp doc. Leaf check-in: 2194b4d13b user: wyoung tags: fpp | |
|
2024-06-24
| ||
| 02:40 | Correct the FDD acronym to be FPP, as it should be. check-in: ce73819d0e user: drh tags: fpp | |
|
2024-06-23
| ||
| 18:38 | Small help text fix in the unversioned command. check-in: bdc8b4a406 user: stephan tags: trunk | |
| 08:31 | Capture the idea of "Fossil Push Policy" proposal in a document so that it can be debated and discussed. check-in: 344fd46df0 user: drh tags: fpp | |
|
2024-06-19
| ||
| 18:26 | Fix a bug in git-export in which the \n at the end of manifest.uuid is omitted. check-in: fc8d476aca user: drh tags: trunk | |
|
2024-06-18
| ||
| 05:20 | Use auto-coloring for private branches, instead of applying the orangeish default `#fec084', so colors play better with skins and the `fossil publish' command. check-in: ee82746517 user: florian tags: trunk | |
Added www/fpp.md.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# Fossil Push Policy
"Fossil Push Policy" or "FPP" is a proposed mechanism to help project
administrators help enforce project development policies by restricting
the kinds of changes that can be pushed up into a community server.
## Background
The default behavior of Fossil is that any developer who has push
privileges on a repository can push any content. Project-specific
policy choices, such as "don't land unapproved changes on trunk"
or "don't reopen a closed ticket" are enforced administratively, not
by Fossil itself. Fossil maintains a detailed audit trail so that policy
violations can be traced back to their source, and so that
violators can be duly reprimanded. Fossil also provides mechanisms
so that unapproved changes can be excised from critical branches without
deleting history. But by default, Fossil
does not attempt to disallow unauthorized changes from occurring in the
first place.
Nothing can prevent a developer from making non-conforming and/or
unauthorized change in a private client-side clone of a Fossil repository
since the client-side repository is under the complete control of the
developer who owns it.
Any automatic policy enforcement must happen on the common repository
when the developer attempts to push.
FPP is *not* a security mechanism. FPP is not intended to allow
untrusted individuals to push to a common repository. FPP does not
guarantee that no undesirable changes ever get pushed. Rather, FPP
is designed as an administrative aid and an automatic mechanism to prevent
accidents or misunderstandings.
## Example Use Cases
Here are examples of the kinds of pushes that FPP is designed to prevent
for unauthorized users:
* Do not allow check-ins on trunk (or some other
important branch).
* Do not allow changes to specific files within
the project.
* Do not allow changes to specific wiki pages.
* Do not allow changes to tickets unless the ticket is in specific
state.
* Do not allow new branches unless the branch name
matches a specific GLOB, LIKE, or REGEXP pattern.
* Do not allow tags to be added to a check-in created by a different
developer.
The foregoing is not an exhaustive list of the kinds of behavior that FPP
is intended to detect and prevent; it is just a representative sample of
the kinds of changes FPP is able to detect and disallow.
Rules can be written such that they apply only to specific users,
user classes — e.g. “developer” — or to everyone other than administrators.
Administrators can also be subject to FPP rules, though they have the
option to override.
## Mechanism
FPP is a set of rules contained in a single configuration setting.
The rules consist of paired Boolean expressions and error messages.
At the end of each push request received by the server, all
expressions are evaluated, and if any are true, the push
fails with its associated error message.
If a push fails, the end user will have to repair their local repository
clone before retrying the push. For example, if the trunk branch is
protected by FPP, they can amend their commit to make it appear as the
start of a new branch off trunk, at which point the push should succeed.
This is a serious inconvenience to the developer who violated the
policy, but this is intentional, intended to motivate the developer
to better follow the rules in the future.
## Client Side Warnings
FPP rules are downloaded on a "fossil clone" and on "fossil config pull fpp".
When rules exist on the client side, then certain client-side operations
(such as "fossil commit")
are also evaluated for rule violations, and appropriate warnings are issued.
However, for client-side operations, rules can always be overridden, since
the owner of the client-side clone is always administrator for their private
clone. Early rule check-in helps prevent the client-side repository
from becoming unpushable due to typos or other accidents that would have
caused a rule violation.
|