Mercurial Ошибка.Не под root - PullRequest
       0

Mercurial Ошибка.Не под root

5 голосов
/ 15 декабря 2010

Я получаю следующую ошибку при попытке добавить файлы в мое хранилище Mercurial.

abort: /HRTRL/img not under root

Это началось, когда разработчик решил проигнорировать наш обычный рабочий процесс и внес изменения непосредственно в рабочий сервер вместо того, чтобы вносить их в свой рабочий каталог, а затем отправить их в тестовое хранилище.Затем мне нужно было синхронизировать тестовое репо с его изменениями, поэтому в итоге я просто скопировал его изменения в мой рабочий каталог, который был текущим, и затем отправил его в центральный репозиторий.Я не использовал Mercurial при копировании и удалении файлов.Теперь у меня есть неотслеживаемые файлы в моем каталоге, и я хотел бы добавить их, чтобы я мог их зафиксировать.Я в конечном итоге с вышеуказанной ошибкой.

Это вывод статуса hg

! HRTRL/css/grid.css
! HRTRL/css/ie.css
! HRTRL/css/ie7.css
! HRTRL/css/jquery.lightbox-0.5.css
! HRTRL/css/layout.css
! HRTRL/css/productPages.css
! HRTRL/css/reset.css
! HRTRL/css/typography.css
? HRTRL/img/webheadercenter.jpg
? HRTRL/img/webheaderleft.jpg
? HRTRL/img/webheaderright.jpg
? HRTRL/includes/CallLog/tests/all_tests.php
? HRTRL/includes/CallLog/views/index.php
? HRTRL/includes/CallLog/views/styles/style.css

1 Ответ

2 голосов
/ 15 декабря 2010

Если вы хотите:

  • Все те со статусом ! (файл отслеживается в репозитории, но отсутствует на диске), должны быть удалены
  • Все те со статусом ? (файл неизвестен), будет добавлено

Затем вы можете просто выполнить следующую команду:

hg addremove --similarity 90

Вы можете, если хотите, сбросить --similarity 90 часть, но если вы уйдете, он попытается выяснить, переименовали ли вы добавленные файлы из некоторых из отсутствующих.

Если вы можете, я бы попробовал использовать TortoiseHg для добавления, так как это можеттакже выполните проверку сходства, чтобы увидеть, скопировали ли вы файлы, это может сделать историю этих файлов более корректной, если они являются копиями из существующих (и все еще отслеживаемых) файлов.Часть addremove --similarity 90 будет проверять только переименования / перемещения, а не копии.


Или, если вам нужны только некоторые файлы, вы можете сделать это вручную.Для каждого из файлов со статусом ! вы можете выполнить следующую команду:

hg remove --after X

где X - путь и имя файла, например:

hg remove --after HRTRL/css/grid.css

, а затем для каждого из файлов статуса ?, которые вы хотите добавить:

hg add X

пример:

hg add HRTRL/img/webheadercenter.jpg
...