Самый быстрый способ сбросить репозиторий Mercurial до версии X (без клонирования)

Допустим, я клонирую удаленный репозиторий Mercurial (по локальной сети или даже через Интернет), чтобы что-то попробовать.
Я работаю в своем клоне, делаю несколько коммитов ... и затем понимаю, что мои изменения не имеет смысл, и мне придется начинать все сначала.

Итак, я хочу снова получить «свежий» клон из того же исходного репозитория.
По сути, я хочу «сбросить» свое локальное репо до точки, прежде чем я начал экспериментировать.

Какой лучший / самый быстрый способ сделать это?

Самый простой способ - просто создать новый клон, но затем HG снова скопирует все репо и всю историю по сети.
Если репо действительно большое, это займет некоторое время и / или заблокирует сеть.

Я попытался создать новый клон в той же папке (надеясь, что HG распознает это и обновит только измененные файлы и историю), но, похоже, также копирует все репо.

Я мог "hg rollback", но это откатывает только последний коммит. Если я сделал несколько коммитов, то могу отменить только последний. Поэтому я не могу сбросить репо до того момента, когда я начал коммит.

Есть идеи?
Неужели нет другого способа, кроме как снова клонировать все это?
(примечание: решение с TortoiseHg было бы неплохо ... Я предпочитаю это командной строке)


person Christian Specht    schedule 18.01.2010    source источник


Ответы (3)


Вы закончите нас, используя hg strip, как предлагает гизмо, но традиционный способ сделать это - снова клонировать - не из удаленного репо, а из вашего собственного локального репо. Например, если вы оформляете заказ "репозиторий" и добавили наборы изменений 99 и 100, которые вам не нравятся:

cd ..
hg clone -r 98 respository repository-scrubbed
mv repository respository-with-crap-I-do-not-want
mv repository-scrubbed repository

Это должно произойти почти мгновенно.

person Ry4an Brase    schedule 18.01.2010

Если вы включите Strip Extension, вы можете использовать команду «hg strip», которая будет удалите историю, которую вы больше не хотите.

Дополнительная информация доступна на вики-странице Команда удаления.

person gizmo    schedule 18.01.2010

hg update -r <changeset number> например, hg update -r 1 для второй версии. Вы можете использовать hg log, чтобы узнать, какую версию вы хотите

person Kimvais    schedule 18.01.2010
comment
На самом деле это не вернет систему в то же состояние, в котором она была клонирована - у вас все равно останутся коммиты, сделанные со «вчерашнего дня». - person Chris McCauley; 18.01.2010