Подтвердить что ты не робот

Mercurial: трансплантат против записи против qrecord против полки против трансплантации против dirstate vs. queue

Я новичок в Mercurial и все еще как-то в процессе оценки, поэтому эти четыре понятия меня смущают. Некоторые упоминаются как эквивалент концепции Git Staging/Index, а некоторые даже лучше, чем Git Staging.

Как четыре команды hg graft, hg record, hg qrecord и hg shelvehg transplant, но это уже объясняется в разделе "Пересадка против трансплантата") сравниваются друг с другом, и как концепции очередей и dirstate? В каких случаях один выбирается над другим?

Я знаю, что есть справочные страницы для каждого, но все еще трудно понять, что каждый из них делает, поскольку VCS в целом является новой темой для меня.

4b9b3361

Ответ 1

Дизайн Mercurial просто не включает концепцию промежуточной области. То есть промежуточное состояние между локальной модификацией и фиксацией отсутствует.

Вот обзор каждой из концепций, которые вы упомянули:

hg graft является эквивалентом git cherry-pick. Он копирует фиксацию из одной ветки в другую. Типичным примером использования этой функции является копирование исправления ошибок из одной ветки релиза в другую. Эта команда заменяет более старое (и теперь устаревшее) расширение hg transplant.

hg record и hg qrecord похожи на git add --patch. Они позволяют вам интерактивно выбирать куски для фиксации. Поэтому, если вы изменили несколько разных областей одного файла, вы можете выбрать, какие области (например, ханки) вы действительно хотите совершить, и которые вы хотите оставить в качестве локальных изменений.

qrecord доступен только в том случае, если включен mq. Он фиксирует патч mq вместо стандартного коммита.

hg shelve похож на git stash. Он позволяет временно отложить локальные изменения в ваших файлах (или кусках файла). Эти модификации могут быть unshelved, когда вы готовы к ним.

dirstate является внутренним классом исходного кода Mercurial. Он не отображается пользователю.

Mercurial Queues (также известно как mq), вероятно, ближе всего вы попадете в промежуточную область в Mercurial. Вот описание из Mercurial wiki:

Изменения сохраняются как патчи, которые передаются в Mercurial. Записи могут быть удалены или переупорядочены, а базовый патч может быть обновляется на основе изменений, внесенных в рабочий каталог. Патч каталог также может быть помещен под контроль версий, так что вы можете отдельная история изменений, внесенных в ваши патчи.

mq часто используется для полировки/доработки, которые вы тестируете локально, но не попали в общедоступное место. Некоторые люди также используют его для поддержки ряда модификаций стороннего кода.