Unusable svn+ssh URL in the presence of diffusion.ssh-port

Version information

This is a fairly standard installation on Ubuntu 18.04; versions reported by Phabricator are as follows:

phabricator
    c4b4a53cad7722f031b725f8b41511e9d341d033 (Fri, Dec 13) (branched from 54bcbdaba94a3573e128c6498816dbfa41d3a9cb on origin) 
arcanist
    bac2028421a4be6e34e08764bbbda49e68b3a604 (Tue, Nov 19) (branched from cc850163f30c4697e925df0d6212469679600a2c on origin) 
phutil
    1750586fdc50a6cd98adba4aa2f5a7649bd91dbe (Sep 30 2019) (branched from 39ed96cd818aae761ec92613a9ba0800824d0ab0 on origin) 
php
    7.2.24-0ubuntu0.18.04.1 
diff
    3.6 at /usr/bin/diff 
git
    2.17.1 at /usr/bin/git 
hg
    4.5.3 at /usr/bin/hg 
pygmentize
    2.2.0 at /usr/bin/pygmentize 
svn
    1.9.7 at /usr/bin/svn 

Problem

If diffusion.ssh-port is set, even just to 22 instead of null, the generated svn+ssh URL shown in the “Clone” dialog becomes unusable. For example:

svn checkout svn+ssh://vcs@phabricator-vcs.lvh.me:22/source/test-svn test-svn

This format is not accepted by svn: the “22” after “:” is illegal. Odd tricks are required to make svn accept a different port number, e.g. via .ssh/config: “Host phabricator-vcs.lvh.me Port XYZ”.

Steps to reproduce

  1. create Subversion repository
  2. configure diffusion.ssh-port to non-null
  3. inspect the URL in “Clone”

Workaround

Just use port 22 and reset the local configuration like this:

 phabricator/ $ ./bin/config delete diffusion.ssh-port

(This assumes that there is no diffusion.ssh-port config in the database.)

Conclusion

Admittedly, Subversion has little practical relevance today, so hardly anyone will encounter such fine points. Nonetheless, Phabricator could be more friendly in treating a configuration of 22 like null.