When a Subversion repository uses a credential with a username, but without a password, the repository is unable to get updated, as the update dies with “Error updating working copy: Expected PhutilOpaqueEnvelope for %P conversion.”
It seems to me that when PhabricatorRepository wants to get the password envelope from PassphrasePasswordKey::getPasswordEnvelope(), the latter returns null when there is no password (because the credential contains no SecretID). So, instead of a PhutilOpaqueEnvelope instance, PhabricatorRepository gets null and dies afterwards (trying to format this null with %P).
I fixed the problem locally by patching PassphrasePasswordKey::getPasswordEnvelope() to:
public function getPasswordEnvelope() {
  $result = $this->requireCredential()->getSecret();
  if (!$result) {
    $result = new PhutilOpaqueEnvelope('');
  }
  return $result;
}which seems to work correctly, but I have no idea whether this would be the correct fix, or this should be handled on a different place.