## #write-types different types of write operations Git supplies enough information to the update hook to be able to distinguish several types of writes. The most common are: * `RW` -- create a ref or fast-forward push a ref. No rewinds or deletes. * `RW+` -- create, fast-forward push, rewind push, or delete a ref. Sometimes you want to allow people to push, but not *create* a ref. Or rewind, but not *delete* a ref. The `C` and `D` qualifiers help here. * When a rule specifies `RWC` or `RW+C`, then *rules that do NOT have the C qualifier will no longer permit **creating** a ref*. Please do not confuse this with the standalone `C` permission that allows someone to [create][] a **repo** * When a rule specifies `RWD` or `RW+D`, then *rules that do NOT have the D qualifier will no longer permit **deleting** a ref*. Note: These two can be combined, so you can have `RWCD` and `RW+CD` as well. One very rare need is to reject merge commits (a commit series that is not a straight line of commits). The `M` qualifier helps here: * When a rule has `M` appended to the permissions, *rules that do NOT have it will reject a commit sequence that contains a merge commit* (i.e., they only accept a straight line series of commits).