2010-09-24 2 views
2

Я сломал код в своих последних 4-5 версиях/нажатиях на главный репозиторий. Теперь я хочу полностью удалить это нажатие и запустить HEAD моего репозитория с этой точки. Как я могу это сделать? В SVN имеется команда dump, которая копирует весь репозиторий из одной версии в другую. Есть какая-то замена в Mercurial или каким-то другим способом?Как вырезать ртутный репозиторий из определенной версии/push

+0

Похоже, что у вас нет прав на эту статью: http://stackoverflow.com/questions/3765208/undo-an-hg-push-backout –

ответ

2

Quardas, «полностью удаляет», не является частью словаря Mercurial по умолчанию. Это система, построенная вокруг неизменной истории. Вы можете отменить то, о чем вы сожалеете, но вы его не удаляете. Подумайте об ученом в его/ее лаборатории, пишущем с ручкой на пронумерованных страницах в журнале регистрации - вырывание страницы считается мошенничеством. Есть ценность в том, что ваши слепые союзники и ошибки сохраняются, если только вы не помните, чтобы не повторять это снова.

Рассмотрите возможность использования hg backout, который легко и автоматически добавляет инверсию набора изменений, тем самым полностью отменяя его, но сохраняя запись как набора изменений, так и его отмены.

Если вы действительно не можете купить эту концепцию, попробуйте изучить clone -r. Он позволяет клонировать ваш репозиторий до определенной точки. Например:

hg clone -r -6 myrepo partial-myrepo 
mv myrepo myrepo-with-stuff-I-regret 
mv partial-myrepo myrepo 

, который заменит ваше репо новой копией, которая пропускает последние пять наборов изменений.

Есть много других способов сделать то же самое, используя инструменты, которые не являются частью набора инструментов Mercurial по умолчанию (расширения, такие как histedit, strip, mercurial queues и т. Д.), Но лучше всего не удалять историю на все и делать это без расширений, если вы это сделаете.

+0

Не когда ученый владеет лабораторией и журналом и записывает пароль, который должен был хранить в другом месте или в голове. Когда разработчик совершает ошибку раскрытия информации, сохранение ошибки не является лучшим. Некоторые ошибки не являются ошибками кода, некоторые - пароли и секретные ключи и собственные документы, которые необходимо удалить или удалить перед публикацией. С SVN это было так же просто, как svnadmin dump, global replace, restore new repos из дампа. Это должно быть так просто с hg, потому что это обычная авария. – codenheim

+0

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

4

Для этого вы можете использовать convert extension.
Хотя, я действительно не понимаю, почему люди всегда хотят скрыть/удалить в своей истории VCS, что они допустили ошибку. Это не так важно, если вы исправите его в новой редакции ...

+0

gizmo, я полностью согласен с тем, что история - плохая идея. –

+0

Неплохая идея, когда у вас есть конфиденциальная информация, которая должна быть полностью стерта, не теряя истории проекта. Распространенная ошибка заключается в том, что слишком поздно выясняется, что чувствительный пароль был проверен в проекте, который должен быть опубликован более широкой аудитории. Беседа о лучших практиках не имеет значения, и это важно для того, чтобы исправить это. Hg - это электроинструмент. Это не должно пытаться думать обо мне. Дело в том, что чувствительная информация - выйдет. Вопрос в том, чего мы теряем, чтобы добиться этого. Принуждение пользователя к использованию ядерного варианта - не лучший способ. – codenheim

 Смежные вопросы

  • Нет связанных вопросов^_^