Odd httpheader=1024 required for Phabricator

Augie Fackler raf at durin42.com
Wed Feb 12 16:48:01 UTC 2020



> On Feb 12, 2020, at 02:24, Makarius <makarius at sketis.net> wrote:
> 
> On 12/02/2020 07:50, Augie Fackler wrote:
>>> 
>>> A bisection over the hg repository yields the following relevant changeset:
>>> 
>>> changeset:   30563:e118233172fe
>>> user:        Gregory Szorc <gregory.szorc at gmail.com>
>>> date:        Mon Nov 28 20:46:42 2016 -0800
>>> files:       mercurial/wireproto.py tests/test-ssh-bundle1.t tests/test-ssh.t
>>> description:
>>> wireproto: only advertise HTTP-specific capabilities to HTTP peers (BC)
>>> 
>>> What means "BC"?
>> 
>> "breaking change" or "behavior change" depending who you ask. :)
>> 
>>> Maybe Phabricator is a good reason to keep the full information?
>> 
>> Not especially. They're doing it wrong assuming that the --stdio protocol is compatible with http, and we've told them that more than once and they've responded...negatively. If someone wanted to try and figure out a way to have phabricator do the right thing (invoke hg's WSGI application, probably via CGI?) that would probably help. I'd certainly be open to mentoring someone doing that work, but I can't justify spending time on it myself.
>> 
>>> Do you think you can refine that for a future release of Mercurial?
>> 
>> I'm not sure what you're asking for here...
> 
> A minimal change to resolve the situation, e.g. by some option or config to
> force http over stdio.

Like I said up-thread, I'm happy to mentor someone through a `hg debugcgiweb` or something that would make it easier to use hg as a CGI script that would be appropriate for exposing to HTTP. I'm not going to say I'll do that work because I frankly don't have the time.

> Complex software products routinely depend on wrong assumptions.
> 
> De-facto we have a situation that Phabricator requires a very old version of
> Mercurial, and thus makes Mercurial look bad.

Last I knew phabricator was pinning to an ancient hg specifically because they try to parse our wire protocol blindly without actually understanding our format evolution policy (we detect new capabilities and then use a new format), and then blamed /us/ when we changed a format they shouldn't have been claiming (in the capabilities network call) to support. So I suspect even if you fix this immediate issue, hg-on-phabricator will still be Very Broken unless they've gotten their act together about filtering capabilities to something their software can cope with.

But I'm happy to mentor an easier cgi endpoint for things if someone has the energy. It just won't be me that has that energy. :)

> 
> 
>        Makarius




More information about the Mercurial mailing list