One thing I was thinking is whether it makes sense to add these checks only in --dry-run mode because we normally don't expect such conflicts. Otherwise, each such check adds an additional network round-trip.
I did wonder why it bothered checking for conflicts before running the command that would fail in case of a conflict.
It makes sense to me to only check for conflicts in --dry-run mode.