从 Eclipse 插件推送到 Mercurial 存储库时收到错误代码:255

Receiving Error Code: 255 when pushing to Mercurial repo from Eclipse Plugin

我在这里使用 HgEclipse:http://www.javaforge.com/project/HGE

我在我的服务器上创建了一个新的存储库来测试插件。我克隆了存储库,添加了一些文件,提交并尝试推送,但收到以下错误消息...

1
2
3
abort: HTTP Error 500: Internal Server Error. Command line:
/home/james/workspace/project:hg -y push http://***@[repository location],
error code: 255

通过一些谷歌搜索我可以发现 255 错误与身份验证有关,但密码是正确的,否则我将无法首先克隆。

任何帮助或建议将不胜感激。

谢谢

编辑:
将我的系统更新到最新版本后,我现在也可以在推送时从命令行获取此信息(以前可以使用):

1
abort: HTTP Error 500: Permission denied: .hg/store/data/path-to-file.i


您的网络服务器无法写入存储库。您可以

  • 更改本地存储库中的权限,以便网络服务器在那里获得写权限(这意味着您需要使用 chmod 为 .hg 下(包括)下的所有文件和目录设置写权限,还需要将粘性位设置为所有目录)
  • 给网络服务器一个自己的 repo,它归服务器所有。

为 web 服务提供一个自己的 repo,如下所示:

1
2
3
4
5
6
7
$ sudo bash
# mkdir /srv/repo-base
# chown www-data /srv/repo-base
# cd /srv/repo-base
# su -c"hg clone /path/to/current/repo web-repo-name" www-data
# vi /etc/apache2/sites-available/$SITE_CONFIG_FILE # change the repo path to /srv/repo-base/web-repo-name
# /etc/init.d/apache2 reload

这种方法的一个缺点是,即使在带有网络服务器的机器上,您也需要通过 http 推送,因为作为普通用户,您没有网络服务器存储库的写入权限。


这回答了我的问题,虽然它是一个不同的系统设置:TortoiseHg。
Repository Settings -> Server 中,我将 Allow Push 设置为 *
这是在防火墙后面的专用网络上。