Branch protection to allow cherrypicking only approved PR from other protected branch

Hello. So I have 2 protected branches: let say master and major-release. I’ve set up my master so we require a PR on every change. This is no issue using branch protection.

For major release, I’m trying to setup so that our major-release also require a PR. However, it seems double work to require 2 PRs with same content on 2 branches. So I’m thinking to allow major release and master to accept approved PR from each other i.e. if I’ve merged a PR on master and I cherrypicked it to major-release, I won’t need another PR with same content and vice versa.

Right now, let’s talk about allowing major-release to accept approved PR from master. I’ve tried these settings for major-release on branch protection:

  • enable Require a pull request before merging, enable Require status checks to pass before merging. However it seems that major-release blocked my approved cherrypick PR.
  • disable Require a pull request before merging, enable Require status checks to pass before merging since I’m assuming the original PR has passed these status checks. Github doesn’t allow me to merge with following message:
 ! [remote rejected] major-release -> major-release (protected branch hook declined)

While that’s the only checklist from branch protection that I enabled plus include administrators.

So my questions are:

  1. Do I misunderstand the Require status checks to pass before merging?
  2. On what cases that we’d like to checklist Require status checks to pass before merging and not other settings?
  3. I saw that because I’m cherrypicking an approved PR from master will cause the hash commit between master and major-release to have different hash commit. Is it the cause so I couldn’t re-use the status check?
  4. Is there a way to allow my issue to be solved? Or maybe the only way is to PR twice on different protected branches?

Thank you.