We have the Reject Force Push hook turned on in our Bitbucket server which is a godsend for most situations but it prevents a real need which is rebasing a topic branch that is undergoing code review in a PR. For example you might want to:
Let's focus on the first use case because that would be possible with --force-with-lease. (It expects the remote ref to be the same as on the tracking branch, and that wouldn't be the case with rebase --onto).
Can a server-side hook tell if a push is --force-with-lease vs. --force? If so then it would be an easy modification to the existing hook. If not then we would need to use an addon like Control Freak which can let you allow push --force for certain branch types but not others.
Hi,
I maintain Control Freak so I'm very familiar with this problem.
Unfortunately there is no way to detect "--force-with-lease" on the server side. The logic behind "--force-with-lease" is based on data only available to the git client. The server does not have this data and so it cannot tell the difference between regular "--force" and "--force-with-lease". On the server side those pushes are indistinguishable.
The git server does not track every time every possible git client has run "git pull" or "git fetch" - that's the data the server would need if it wanted to implement this.
Thanks Sylvie. That's what I figured but I wanted to verify.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.