When using rebase as the update strategy, we try and detect whether a parent branch was merged into the source using a squash merge, and reparent using git rebase --onto <newparent> <oldparent>. This seemed like it was working fine for subsequent updates, but if the branch being updated has moved foward from the source this tries to replay old commits again causing issues. Need to tighten up the detection of when to re-parent, probably get the merge base between the branch being updated and the old parent and see if it's moved.
Workaround is to delete the local old parent using cleanup, which will mean it gets ignored for re-parenting.