Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Troubles with mercurial 1.9 and ssh

Last weekend (16. July 2011) our mercurial packages auto-updated to the newest 1.9 mercurial binaries using the mercurial-stable ppa on a ubuntu lucid.

Now pulling from repository over SSH no longer works. Following error is displayed:

remote: Traceback (most recent call last):
remote:   File "/usr/share/mercurial-server/hg-ssh", line 86, in <module>
remote:     dispatch.dispatch(['-R', repo, 'serve', '--stdio'])
remote:   File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 31, in dispatch
remote:     if req.ferr:
remote: AttributeError: 'list' object has no attribute 'ferr'
abort: no suitable response from remote hg!

In the mercurial 1.9 upgrade notes there is an 'interesting' note:

contrib/hg-ssh from older Mercurial releases will not be compatible with version 1.9, please update your copy.

Has somebody an idea how to upgrade (if there is already a version) the package mercurial-server? Or do we need to upgrade something else? (New python scripts?)

If there is no new version yet of the necessary packages, how to downgrade to the previous 1.7.5 (ubuntu lucid)?

Any help is really appreciated as our development processes are really slowed down by this fact. :S

Thanks

like image 883
Danilo Tommasina Avatar asked Jul 18 '11 09:07

Danilo Tommasina


1 Answers

Ok, found a (workaround) solution by editing a python script.

Edit the script /usr/share/mercurial-server/hg-ssh At the end of the script replace the line:

dispatch.dispatch(['-R', repo, 'serve', '--stdio'])

with the line:

dispatch.dispatch(dispatch.request(['-R', repo, 'serve', '--stdio']))

Replace also:

dispatch.dispatch(['init', repo])

with the line:

dispatch.dispatch(dispatch.request(['init', repo]))

This works for us.

Hopefully this saves to somebody else burning 4 hours of work with googleing and learning basics of python. :S

like image 195
Danilo Tommasina Avatar answered Oct 29 '22 11:10

Danilo Tommasina