Pull Requests Not Reflecting Changes Pushed to Remote Branch
- Pull requests are not updated when changes are pushed to their branches. Browsing commits on the pull request branches (i.e. select Commits and then the appropriate branch) shows the commits as expected.
- Branch permissions are not being applied when users push commits.
Causes and Resolutions
Bitbucket Server relies on hook scripts that are installed into each repository (and managed by the system) to provide change information that, in turn, allows it to update pull requests and check branch permissions. If the hooks are not installed correctly, or are damaged, these required callbacks do not happen and the functionality associated with them fails.
Confirming the fix
The hooks triggering the rescope of the pull request will not work retroactively after installing them properly, so if the pull request in your repository was previously in a 'bad' (out-of-date) state and there were no new commits to the source branch of the pull request, the pull request will remain in an outdated state. To test whether the hooks are working after installation:
- Declining and reopening all the affected pull requests is the simplest approach. This can be automated by using the following two REST API calls:
- A new commit must be made to the source branch - this should now automatically update the pull request in Bitbucket Server with all missing commits
- Alternatively, a merge from source branch to the target branch may be performed locally and pushed to Bitbucket Server, which should result in closing the pull request as 'Merged' automatically