+10
-65
doc/contributing/submitting-changes.chapter.md
+10
-65
doc/contributing/submitting-changes.chapter.md
···- Hydra builds for master and staging should not be used as testing platform, it’s a build farm for changes that have been already tested.- When changing the bootloader installation process, extra care must be taken. Grub installations cannot be rolled back, hence changes may break people’s installations forever. For any non-trivial change to the bootloader please file a PR asking for review, especially from \@edolstra.+<!-- generated from ./staging-workflow.dot using: dot -Tsvg staging-workflow.dot > staging-workflow.svg -->+[This GitHub Action](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/periodic-merge-6h.yml) brings changes from `master` to `staging-next` and from `staging-next` to `staging` every 6 hours; these are the blue arrows in the diagram above. The purple arrows in the diagram above are done manually and much less frequently. You can get an idea of how often these merges occur by looking at the git history.-master -> "staging-next" [color="green"] [label="automatic merge (GitHub Action)"] [fontcolor="green"]-"staging-next" -> staging [color="green"] [label="automatic merge (GitHub Action)"] [fontcolor="green"]-[This GitHub Action](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/periodic-merge-6h.yml) brings changes from `master` to `staging-next` and from `staging-next` to `staging` every 6 hours; these are the green arrows in the diagram above. The red arrows in the diagram above are done manually and much less frequently. You can get an idea of how often these merges occur by looking at the git history.The `master` branch is the main development branch. It should only see non-breaking commits that do not cause mass rebuilds.The `staging` branch is a development branch where mass-rebuilds go. Mass rebuilds are commits that cause rebuilds for many packages, like more than 500 (or perhaps, if it's 'light' packages, 1000). It should only see non-breaking mass-rebuild commits. That means it is not to be used for testing, and changes must have been well tested already. If the branch is already in a broken state, please refrain from adding extra new breakages.During the process of a releasing a new NixOS version, this branch or the release-critical packages can be restricted to non-breaking changes.The `staging-next` branch is for stabilizing mass-rebuilds submitted to the `staging` branch prior to merging them into `master`. Mass-rebuilds must go via the `staging` branch. It must only see non-breaking commits that are fixing issues blocking it from being merged into the `master` branch.···During the process of a releasing a new NixOS version, this branch or the release-critical packages can be restricted to non-breaking changes.The same staging workflow applies to stable release branches, but the main branch is called `release-*` instead of `master`.