Какую команду вы используете для исключения файла из репозитория Mercurial?

У меня есть большой файл в моем репозитории Mercurial, который препятствует загрузке моего репозитория в Bitbucket. Я получаю сообщение об ошибке:

abort: HTTP Error 413: Request Entity Too Large

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

Я нашел этот документ в разделе «IncludeExclude Proposal», но не уверен, является ли это предлагаемой функцией или реальной:

https://www.mercurial-scm.org/wiki/IncludeExcludeProposal


person Uro    schedule 08.03.2010    source источник


Ответы (2)


Если вы уже зафиксировали его, и похоже, что это так, то exclude (aka hgignore) для вас не сработает.

.hgignore (и никогда не применяемый расширенный синтаксис, который вы видите в InlcudeExcludeProposal) помогают предотвратить вы случайно не добавили файл, который не хотите добавлять. После того, как вы добавили файл, hgignore не имеет никакого эффекта, и после того, как вы зафиксировали это добавление, его невозможно удалить из истории без EditingHistory

Если вы можете просто избавиться от последних нескольких коммитов (с намерением повторить все, кроме добавлений большого файла), вы можете использовать hg clone -r lastknowngoodextension existingrepopath newrepopath, и у вас будет репо за вычетом этих нежелательных расширений в newrepopath. Я думаю, Bitbucket предлагает веб-интерфейс для удаления ревизий, но я не уверен.

Если вы не можете просто клонировать (или удалить) последние несколько ревизий, тогда вы находитесь в пространстве EditingHistory, используя mq, convert или аналогичные.

Если вы хотите, чтобы эти файлы отслеживались, но не в репо, вы можете посмотреть на расширение bfiles .

person Ry4an Brase    schedule 08.03.2010

Теперь это возможно.
TortoiseHg может это сделать (есть опция «Забыть файл» ).

Или введите в консоли hg forget.

person naXa    schedule 12.04.2014
comment
опаздывает на вечеринку, но просто интересно, действительно ли забыть - это то, что искал OP. На странице документации Удаляются файлы только из текущей ветки, а не из всей истории проекта, [...]. - person superjos; 09.10.2018