Удаленные файлы все еще загружаются с клоном hg? - PullRequest
3 голосов
/ 10 февраля 2011

В нашем репозитории Mercurial мы добавили действительно большой файл (и сделали hg push), затем удалили большой файл (и сделали еще один push).

Теперь, если кто-то сделает hg clone, они все равно будут загружать этот большой файл? Я знаю, что он не будет отображаться в их рабочем каталоге после удаления, но будет ли файл по-прежнему извлекаться и храниться во внутреннем хранилище Mercurial?

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

Ответы [ 2 ]

6 голосов
/ 10 февраля 2011

Конечно, он все еще будет в хранилище.

Вы всегда можете вернуться к более ранним ревизиям, и если вы вернетесь к ревизии, полученной вами при фиксации файла, он будет там во всей своей красе.

Есть два способа смягчить это (когда вы совершаете, а не сейчас):

  • Одно из расширений для больших файлов, они по существу добавляют большие файлы во вторичный репозиторий и связывают их, так что если вы обновляете ревизию, где файл не существует, а у вас его еще нет, это не будет обновлено. то есть. это скорее стиль вытягивания по требованию
  • Если файл никогда не изменяется, оставьте его доступным в сети и просто создайте какую-нибудь ссылку на него вместо полной копии

Прямо сейчас у вас есть четыре варианта:

  • Удалите набор изменений, который добавил файл, и все наборы изменений, которые последовали за ним. Вы можете сделать это, используя расширение Mercurial Queues. Обратите внимание, что вы должны сделать это зачистки во всех клонах. Если только один из ваших пользователей отодвинет репозиторий, в котором этот файл находится в истории, к центральному клону, вы вернете наборы изменений.
  • Перестроить хранилище с нуля вручную
  • Используя команду hg convert и некоторую фильтрацию, для этого можно использовать опцию --filemap
  • Оставь как есть. Насколько он большой, будет большой проблемой?

Обратите внимание, что перестройка хранилища вручную или через hg convert сделает недействительными все клоны. Любой, кто пытается выдвинуть ваш новый центральный клон со старого клона, получит сообщение о unrelated repositories. Если кто-то из ваших пользователей тупой ^ H ^ H ^ H ^ H ^ Не достаточно умный, чтобы понять, что форсировать толчок - плохая идея, тогда у вас будут проблемы с этим подходом.

4 голосов
/ 10 февраля 2011

Да, файл все еще в истории.Если вы хотите полностью удалить его, вам нужно использовать Mercurial Queues - см. История редактирования на вики Mercurial.

Просто имейте в виду, что это нарушает клоны при изменении идентификаторов ревизий.

...