Mercurial abort: index ... поврежден - PullRequest
4 голосов
/ 16 декабря 2010

Я получаю следующую ошибку при попытке клонирования из производственного репозитория.

abort: index data/HR3/globals.php.i is corrupted!

После чего mercurial быстро пукает на меня и не в состоянии клонировать.Я попытался удалить рассматриваемый файл из репозитория, но это не удалось.Я также попытался удалить каталог .hg в производственном репозитории и повторно добавить и зафиксировать все файлы.Это приводит к той же ошибке.

Кстати, я пытаюсь клонировать текущую производственную копию нашего приложения на наш тестовый сервер.Наш тестовый сервер работает в Virtual Box.

ОБНОВЛЕНИЕ

Я исправил проблему, удалив файл globals, затем удалив каталог .hg и повторно запустив "hg init" и"HG добавить."и "hg commit."

Теперь я получаю внутреннюю ошибку сервера, когда пытаюсь клонировать.Ниже приведена команда клонирования, которую я использовал.

sudo hg clone http://10.1.1.25/ www

Как ни странно, mercurial сообщает мне, что "реальный" URL-адрес - это "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.

Ответы [ 2 ]

8 голосов
/ 16 декабря 2010

Я сталкивался с такой ошибкой раньше.Попробуйте запустить

hg verify

в вашем поврежденном хранилище.Затем следуйте инструкциям отсюда:

http://www.softwareprojects.com/resources/programming/t-how-to-fix-mercurial-corrupt-repository-1926.html

3 голосов
/ 17 декабря 2010

Похоже, что вы публикуете репозиторий методом static-http с того же сервера, на котором находится ваш проект разработки. Этот метод работает только в том случае, если веб-сервер не связывается с $ URL / .hg, что, похоже, делает ваш сервер. проверьте, можете ли вы загрузить папку .hg с wget -r -np $URL/.hg в новую папку и запустить hg verify там.

Как ни странно, mercurial говорит мне, что "реальный" URL - это "10.1.1.25/HR3/index.php", что, безусловно, не мой ртутный репозиторий.

Я полагаю, что ваш веб-сервер перенаправляет некоторые ртутные запросы на ваш URL index.php.

...