上周末(2011年7月16日)我们的mercurial软件包使用ubuntu lucid上的mercurial-stable ppa自动更新到最新的1.9 mercurial二进制文件。
现在通过SSH从存储库中提取不再有效。 显示以下错误:
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!
在mercurial 1.9 upgrade notes中有一个'有趣'的注释:
contrib/hg-ssh from older Mercurial releases will not be compatible with version 1.9, please update your copy.
有人知道如何升级(如果已有版本)包mercurial-server? 或者我们需要升级其他东西吗? (新的python脚本?)
如果没有新版本的必要软件包,如何降级到之前的1.7.5(ubuntu lucid)?
我们非常感谢任何帮助,因为我们的开发过程确实因此而变慢。 :S
由于
答案 0 :(得分:17)
好的,通过编辑python脚本找到了(解决方法)解决方案。
编辑脚本/ usr / share / mercurial-server / hg-ssh 在脚本的末尾替换以下行:
dispatch.dispatch(['-R', repo, 'serve', '--stdio'])
行:
dispatch.dispatch(dispatch.request(['-R', repo, 'serve', '--stdio']))
也替换:
dispatch.dispatch(['init', repo])
行:
dispatch.dispatch(dispatch.request(['init', repo]))
这对我们有用。
希望通过googleing和学习python的基础知识,这可以节省4个小时的工作。 :S
答案 1 :(得分:0)
更新了更新版本的mercurial-server以支持API更改,但可能需要重新运行refresh-auth
脚本才能升级安装。