Merge #697: hasNoRemoteChanges should return false for 412s (fixes #684)