Release process: staging branches?


I read, but it doesn’t mention the staging, staging-next and staging-<release> branches.

I understand that some branches match channels e.g.:

  • nixos-unstable channel = master branch
  • nixos-19.03 channel = release-19.03 branch

What’s the point of the staging.* branches? From what I see, staging-next is merged into staging and then into master.
But PRs have different targets. What would make a specific change go into staging and not directly into master?


It’s actually the other way around. PRs that require many rebuilds get merged into staging. Every once in a while, the current staging gets forked off into staging-next. The purpose of staging-next is to let the current rebuild finish, detect regressions, stabilize. staging-next is then merged into master. See for details.


Have a look at for an explanation.

1 Like

Thanks for explaining and linking to the RFC. :slight_smile: