Самый быстрый способ «сбросить» репозиторий Mercurial до версии X (без клонирования) - PullRequest
8 голосов
/ 18 января 2010

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

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

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

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

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

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

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

Ответы [ 3 ]

18 голосов
/ 18 января 2010

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

8 голосов
/ 18 января 2010

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

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

1 голос
/ 18 января 2010

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

...