As a first step, this can fail with an error if it's not possible, but eventually should provide ways to recover, similar to failed `git merge`.