Я перемещаю процесс сборки для использования Mercurial и хочу вернуть рабочий каталог в состояние ревизии подсказки. Более ранние запуски процесса сборки изменили некоторые файлы и добавили некоторые файлы, которые я не хочу фиксировать, поэтому у меня есть локальные изменения и файлы, которые не добавляются в хранилище.
Какой самый простой способ отказаться от всего этого и получить чистый рабочий каталог с последней версией?
В настоящее время я делаю это:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
но похоже, что должен быть более простой способ.
Я хочу сделать то же самое, что удалить репо, сделать свежий клон и обновить. Но репо слишком велико, чтобы быть достаточно быстрым.
hg update 00
), а затем вернетесь к подсказке. Почемуhg revert --all
недостаточно вернуться в согласованное рабочее состояние папки перед извлечением и обновлением?archive
команду полезной в будущем. Например, вы можетеhg archive ../newbuild
, и снимок вашего хранилища в последний разhg update
будет размещен там. Обычно я делаю это для ночных сборок, чтобы не рисковать своим репо. Просто удалите каталог сборки, когда он вам больше не нужен.Ответы:
Эти шаги должны быть сокращены до:
-C
Флаг указывает команду обновления , чтобы отменить все локальные изменения перед обновлением.Тем не менее, это может по-прежнему не отслеживать файлы в вашем хранилище. Похоже, вы тоже хотите избавиться от них, поэтому я бы использовал
purge
расширение для этого:В любом случае, нет единственной команды, которую вы можете попросить, чтобы Mercurial выполнил здесь все, что вы хотите, за исключением случаев, когда вы измените процесс на тот метод "полного клона", который, как вы говорите, вы не можете сделать.
источник
hg --config "extensions.purge=" purge --all
hg purge --all
только что доставил мне сильную головную боль, поскольку он также стер мои локальные настройки, а именно: пользователя базы данных / пароль и т. д. :)Это удалит все изменения и обновит до последней главы в текущей ветке.
И вы можете включить расширение очистки, чтобы иметь возможность удалять все неверсированные файлы тоже.
источник
hg purge
для неверсированных файлов.Для удаления неотслеживаемого на * nix без расширения purge вы можете использовать
Который использует
источник
Если вы ищете простой метод , то вы можете попробовать это.
Я сам не могу запомнить командные строки для всех своих инструментов, поэтому я стараюсь делать это с помощью пользовательского интерфейса:
1. Сначала выберите «совершить»
2. Затем отобразите проигнорированные файлы. Если у вас есть незафиксированные изменения, скрыть их.
3. Теперь выберите все из них и нажмите «Удалить Unversioned».
Готово. Это процедура, которую гораздо проще запомнить, чем командную строку.
источник
статус рт.ст. покажет вам все новые файлы, а затем вы можете просто ете их.
Обычно я хочу избавиться от игнорируемых и неверсионных файлов, поэтому:
И затем следуйте этому с:
который помещает все версионные файлы в правильное состояние для ревизии хххх
Чтобы следовать традиции переполнения стека, говоря вам, что вы не хотите этого делать, я часто обнаруживаю, что этот «ядерный вариант» уничтожил вещи, которые мне небезразличны.
Правильный способ сделать это - использовать опцию «make clean» в процессе сборки, а также, возможно, «make realclean» и «make distclean».
источник