Version control 水银中止:索引。。。腐败

Version control 水银中止:索引。。。腐败,version-control,mercurial,Version Control,Mercurial,我在尝试从生产repo克隆时遇到以下错误 abort: index data/HR3/globals.php.i is corrupted! 之后,mercurial立即对我放屁,并未能克隆。我尝试从生产回购中删除有问题的文件,但失败了。我还尝试删除生产repo中的.hg目录,并重新添加和提交所有文件。这会产生相同的错误 仅供参考,我正在尝试将应用程序的当前生产副本克隆到测试服务器。我们的测试服务器正在虚拟机箱中运行 更新 我通过删除globals文件,然后删除.hg目录并重新运行“hgini

我在尝试从生产repo克隆时遇到以下错误

abort: index data/HR3/globals.php.i is corrupted!
之后,mercurial立即对我放屁,并未能克隆。我尝试从生产回购中删除有问题的文件,但失败了。我还尝试删除生产repo中的.hg目录,并重新添加和提交所有文件。这会产生相同的错误

仅供参考,我正在尝试将应用程序的当前生产副本克隆到测试服务器。我们的测试服务器正在虚拟机箱中运行

更新

我通过删除globals文件,然后删除.hg目录并重新运行“hginit”和“hgadd.”以及“hgcommit”修复了这个问题

现在,当我尝试克隆时,出现了一个内部服务器错误。下面是我使用的clone命令

sudo hg clone http://10.1.1.25/ www
奇怪的是,mercurial告诉我“真正的”url是“10.1.1.25/HR3/index.php”,这绝对不是我的mercurial存储库。我不知道它为什么这样做。我检查了我的服务器日志,下面的错误是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
很明显,克隆命令导致Mercurial启动PHP,并让它尝试解析Mercurial数据存储中的某些内容

分辨率


我怀疑这是因为我在存储库的根目录中有一个index.php文件,可以重定向。如果您尝试在我们的网络上直接导航到http:10.1.1.25,则会自动指向索引页面,而不是根目录中的index.php页面。不知何故,我认为这是导致php启动并尝试解析mercurial存储中的项的原因。我通过ssh克隆解决了这个问题。

我以前遇到过这样的错误。试着跑

hg verify
在损坏的存储库上。然后按照此处的说明进行操作:


您似乎使用静态http方法从开发项目所在的同一台服务器发布了您的回购协议。这种方法只有在web服务器没有弄乱$URL/.hg的情况下才有效,而您的web服务器似乎就是这样做的。检查是否可以在新文件夹中下载带有
wget-r-np$URL/.hg
的.hg文件夹,并在那里运行
hg verify

奇怪的是,mercurial告诉我“真正的”url是“10.1.1.25/HR3/index.php”,这绝对不是我的mercurial存储库


我猜您的web服务器会将一些mercurial请求重定向到index.php url。

您可以尝试这样做:

hg forget HR3/globals.php
hg commit
hg add HR3/globals.php
hg commit

你的标题是“Mercurial”,但你说的是“.git”文件夹。是哪一个?哎呀,我是说,hg。我最近从git切换到mercurial,所以有时会感到困惑。我将进行编辑。请确保服务器和客户端上的Mercurial版本相似。可能是您正试图从不了解存储库中某些内容的旧客户端进行克隆。问题1-为什么要使用sudo?问题2-您的http地址似乎不正确,应该是这样:
http://10.1.1.25/myProject
-不带空格。尝试在浏览器中输入您的url,以查看它是否真的有效,以及版本是否相同。我使用sudo是为了让mercurial能够创建它要克隆到的目录。如果我不这样做,它会抱怨权限问题,因为我的“工作”目录归root所有。事实证明,在我的项目的根目录中有一个index.php文件在执行重定向。这会导致我的问题吗?这是一个愚蠢的问题,我运行了hg验证,它说一切都是犹太的。你在哪里运行它?这个应该在原始存储库上运行。我在原始存储库上运行了它。我正试图从中克隆的那个。这真的很奇怪,真让人困惑。。。您使用的是哪个版本的mercurial?是原装mercurial还是随TurtoiseHG一起装运的?你能再删除一次.hg目录并使用另一个mercurial提交所有文件吗?我使用的是原来的mercurial。我是通过运行“apt get install mercurial”得到它的