Discovering this may involve working directly with the mercurial developer community which I'm not yet ready to invest in. I found it rather difficult even doing this, as there is no clear documentation about what headers are required (parameters appear totally optional and apparently none exist in core Mercurial as yet) - but it looks like there's at least 1 header required. I initially looked at being able to package up a bundle2 to send down, however I was under the impression that it would only be "half an implementation" needed for bundle2. Going forward however, I suspect there may need to be significantly more effort put into packaging up bundles being sent back and forth. I think this solution is an elegant intermediary solution as it doesn't require determining version of client/server mercurial, nor having to package up bundles in a format that is not yet fully known/documented (aside from source code.). This forces the client/server to negotiate using a legacy wire format. The idea is to remove "bundle2" from the list of capabilities which the server responds with. I have a proposed change to resolve the issue in the short-term. I guess it's best to add a "Mercurial 3.5>= unsupported" statement somewhere in the docs. Maybe this is finally a reason to switch Git anyway. I've tried a few things, but I'm unable to fix it unless I take a deep dive into the inner workings of both Phabricator and Mercurial. Remote: abort: unexpected error 'pushkey'. Remote: abort: stream ended unexpectedly (got 0 bytes, expected 4) So it's pretty clear the new bundle2 wire-protocol causes this issue.
I haven't seen any trace of bundle2 in the debug log using that version. hgrc files but the same problem occurs.Īlso I've tried to downgrade hg back to 3.4.2 and the problem doesn't occur anymore. hg/hgrc, possibly even your account's ~/.hgrc or ~/Mercurial.ini? Could you post your local machine repository of.
HOW TO TELL BITNESS OF MERCURIAL WINDOWS INSTALL
I'm certain there is just a single install of mercurial on the server, I've double checked the 'hg' path configured in Phabricator too. Could the server have multiple versions of mercurial, and might not be using 3.5.1?.It happens with simple text modifications, I didn't test with binaries. Does the commit you're pushing contain binary file changes, or perhaps something else aside from simple text file modifications?.Are you using any extensions such as largefiles?.Are you using SSH or HTTP(S) for push/pull?.That's weird, I'll investigate it further. Provide some further detail about your setup:
I setup a test environment with mercurial 3.5.1 on both client and server and did not see this issue. Raise util.Abort(_('not a Mercurial bundle')) Ret = bundle2.getunbundler(self.ui, stream)įile "/usr/local/lib/python2.7/site-packages/mercurial/bundle2.py", line 606, in getunbundler Reply = (stream,, 'push')įile "/usr/local/lib/python2.7/site-packages/mercurial/wireproto.py", line 411, in unbundle Bundle2-output-bundle: "HG20", 4 parts totalīundle2-output-part: "replycaps" 155 bytes payloadīundle2-output-part: "check:heads" streamed payloadīundle2-output-part: "changegroup" (params: 1 mandatory) streamed payloadīundle2-output-part: "pushkey" (params: 4 mandatory) empty payloadįile "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 163, in _runcatchįile "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 895, in _dispatchįile "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 656, in runcommandįile "/usr/local/lib/python2.7/site-packages/mercurial/extensions.py", line 171, in closureįile "/usr/local/lib/python2.7/site-packages/hgext/pager.py", line 130, in pagecmdįile "/usr/local/lib/python2.7/site-packages/hgext/color.py", line 525, in colorcmdįile "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 1013, in _runcommandįile "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 982, in checkargsįile "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 892, in ĭ = lambda: util.checksignature(func)(ui, *args, **cmdoptions)įile "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 792, in checkįile "/usr/local/lib/python2.7/site-packages/hgext/mq.py", line 3515, in mqcommandįile "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 5286, in pushįile "/usr/local/lib/python2.7/site-packages/mercurial/exchange.py", line 240, in pushįile "/usr/local/lib/python2.7/site-packages/mercurial/exchange.py", line 650, in _pushbundle2