···1+# TODO: Move to top-level via staging PR
2+[*.js]
3+indent_style = space
4+indent_size = 2
+29
ci/README.md
···2021- `BASE_BRANCH`: The base branch to use, e.g. master or release-24.05
22- `REPOSITORY`: The repository from which to fetch the base branch. Defaults to <https://github.com/NixOS/nixpkgs.git>.
00000000000000000000000000000
···2021- `BASE_BRANCH`: The base branch to use, e.g. master or release-24.05
22- `REPOSITORY`: The repository from which to fetch the base branch. Defaults to <https://github.com/NixOS/nixpkgs.git>.
23+24+# Branch classification
25+26+For the purposes of CI, branches in the NixOS/nixpkgs repository are classified as follows:
27+28+- **Channel** branches
29+ - `nixos-` or `nixpkgs-` prefix
30+ - Are only updated from `master` or `release-` branches, when hydra passes.
31+ - Otherwise not worked on, Pull Requests are not allowed.
32+ - Long-lived, no deletion, no force push.
33+- **Primary development** branches
34+ - `release-` prefix and `master`
35+ - Pull Requests required.
36+ - Long-lived, no deletion, no force push.
37+- **Secondary development** branches
38+ - `staging-` prefix, `haskell-updates` and `python-updates`
39+ - Pull Requests normally required, except when merging development branches into each other.
40+ - Long-lived, no deletion, no force push.
41+- **Work-In-Progress** branches
42+ - `backport-`, `revert-` and `wip-` prefixes.
43+ - Deprecated: All other branches, not matched by channel/development.
44+ - Pull Requests are optional.
45+ - Short-lived, force push allowed, deleted after merge.
46+47+Some branches also have a version component, which is either `unstable` or `YY.MM`.
48+49+`ci/supportedBranches.js` is a script imported by CI to classify the base and head branches of a Pull Request.
50+This classification will then be used to skip certain jobs.
51+This script can also be run locally to print basic test cases.