尝试从生产仓库克隆时出现以下错误。
abort: index data/HR3/globals.php.i is corrupted!
之后,mercurial迅速放弃我并且无法克隆。我已经尝试从生产仓库中删除有问题的文件,但失败了。我还尝试删除生产仓库中的.hg目录,然后重新添加并提交所有文件。这会产生相同的错误。
就是这样,我正在尝试将我们应用的当前生产副本克隆到我们的测试服务器。我们的测试服务器在Virtual Box中运行。
的更新 的
我通过删除globals文件然后删除.hg目录并重新运行“hg init”和“hg add”来解决了这个问题。和“hg commit。”
现在,当我尝试克隆时,我收到内部服务器错误。以下是我使用的克隆命令。
sudo hg clone http://10.1.1.25/ www
奇怪的是,mercurial告诉我“真正的”网址是“10.1.1.25/HR3/index.php”,这绝对不是我的善变资源库。我不知道为什么这样做。我检查了我的服务器日志,以下错误是Apache的问题。
[Thu Dec 16 12:25:30 2010] [error] [client 10.1.1.102] PHP Parse error: syntax error, unexpected T_STRING in /var/www/.hg/store/data/_h_r3/includes/_b_n_a_s/_b_n_a_s-_h_r_s201.php.i on line 22
显然,clone命令导致Mercurial启动PHP,并尝试解析Mercurial数据存储中的某些内容?
解决 的
我怀疑这是因为我在我的存储库的根目录中有一个index.php文件,它会重定向。如果您尝试直接导航到我们网络上的http:10.1.1.25,您将自动定向到索引页面,该页面不是根目录中的index.php页面。不知怎的,我认为这导致php开始尝试解析mercurial商店中的项目。我已经通过克隆ssh解决了这个问题。
答案 0 :(得分:8)
之前我遇到过这样的错误。尝试运行
hg verify
在您损坏的存储库上。然后按照此处的说明操作:
答案 1 :(得分:3)
您似乎使用static-http方法从开发项目所在的同一服务器上发布repo。此方法仅在Web服务器不会使用$ URL / .hg时才会起作用。检查您是否可以在新文件夹中下载带有wget -r -np $URL/.hg
的.hg文件夹并在那里运行hg verify
。
奇怪的是,mercurial告诉我“真正的”网址是“10.1.1.25/HR3/index.php”,这绝对不是我的善变存储库。
我猜您的网络服务器会将一些mercurial请求重定向到您的index.php网址。
答案 2 :(得分:0)
您可以尝试这样做:
hg forget HR3/globals.php
hg commit
hg add HR3/globals.php
hg commit