Code change:
Starting this week, we happens anyways. [^1]: will enable it, with support by Unless this causes major problems, we intend to keep this enabled permanently. Please use this issue to report any problems you encounter because of this. The and branches that are consumed by Hydra. Please contact the release managers as they will be to the exception list. In general, we expect that the PR workflow will be enough for the vast majority of cases. This change was originally proposed almost 3 years ago with closed when direct pushes were way more frequent at . Very recently a new attempt was started with , for which computed that nowadays of commits are pushed directly. The RFC was struggling to get enough shepherds, when rightly that such simple decisions shouldn't be blocked, following up with the proposal to just enable it and try it out.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
nixos-release-managers already existed
Note that releases should also work without direct pushes, which is being discussed in , so this exception should be removed in the future
Link is 404.
Thanks, fixed now by restoring the RFC's branch
that it looks like PR's can't be merged anymore when a committer requested changes (though it seems like those reviews can be dismissed? Edit: Confirmed, can be dismissed), additionally auto-merge seems to be available now: ! It doesn't seem inherently bad, but I did not expect that to happen.
"Require approvals" can be disabled. And indeed, depending on the configuration, committers can also dismiss a review.
I'm pretty sure that setting is not enabled. Indeed as an example, was merged 1 hour ago (when the setting was already in effect), and it was merged without any reviews. The good thing is that dismissing reviews does allow merging again, even if it's your own PR. And even better: To dismiss reviews you have to give a reason, I tested this here:
Fyi, we do have the option to turn off allowing auto-merges, see .
I think we should disable the auto-merge feature because it works only based on the reviews and completely ignores the OfBorg status. And until we have more solid CI we cannot also require CI checks to pass before merging.
I turned off auto-merges.
Meh. I don't oppose this policy, but I don't like how this decision sidesteps the RFC process. Does this imply proposals can be tacitly approved if they don't get enough attention? It doesn't seem right.
for the record, I'm fine with that and I withdraw my skepticism :) The problem I had with the previous behavior was that there was no way to override it (and from my experience almost every rule tends to have an exception ;-) ). I haven't checked it so far, but if it's possible to dismiss now while having to provide a reason for that seems good to me, thanks :+1: OK with this one being pinned globally, my other issue is also resolved, this provides reasonable visibility for each committer. IIRC we haven't had notable config changes in the repo for a while and I'm not sure if there are follow-ups planned to this, but for the future I'd like to suggest to always communicate it via a globally pinned discourse topic (and perhaps even cc all of the committers in $github_issue).
I know it looks a bit like we pulled a Flake again, but: The change does not have any long-lasting API or user implications, it can be reverted at any point without problems The change has a very low negative impact, of commits were direct pushes Meanwhile, the change has a significant positive impact, especially for security Considering this, I don't think it's necessary to have an RFC for this, because it should be an uncontroversial change, and indeed, we haven't seen any good reason in to not do this. But also a big argument is that going through an RFC for something so minor distracts people from more important problems to fix. Not having to maintain this RFC for months frees up time for me to e.g. focus on implementing accepted NixOS/rfcs, which is considerably more impactful.
Closing as this was up long enough

Related discussion:
text: <del> name: "Direct Push Warning" on: push: branches: - master - release-** permissions: contents: read jobs: build: permissions: contents: write  # for peter-evans/commit-comment to comment on commit runs-on: ubuntu-latest if: github.repository_owner == 'NixOS' env: GITHUB_SHA: ${{ github.sha }} GITHUB_REPOSITORY: ${{ github.repository }} steps: - name: Check if commit is a merge commit id: ismerge run: | ISMERGE=$(curl -H 'Accept: application/vnd.github.groot-preview+json' -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/${{ env.GITHUB_REPOSITORY }}/commits/${{ env.GITHUB_SHA }}/pulls | jq -r '.[] | select(.merge_commit_sha == "${{ env.GITHUB_SHA }}") | any') echo "ismerge=$ISMERGE" >> $GITHUB_OUTPUT # github events are eventually consistent, so wait until changes propagate to thier DB - run: sleep 60 if: steps.ismerge.outputs.ismerge != 'true' - name: Warn if the commit was a direct push if: steps.ismerge.outputs.ismerge != 'true' uses: peter-evans/commit-comment@v2 with: body: | @${{ github.actor }}, you pushed a commit directly to master/release branch instead of going through a Pull Request. That's highly discouraged beyond the few exceptions listed on https://github.com/NixOS/nixpkgs/issues/118661 </del>