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

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

Мне комфортно использовать git, но в последнее время изучали Mercurial из любопытства, основываясь на мнениях друзей, что в некоторых отношениях это лучше.

Одна из первых вещей, которые я заметил, однако, заключается в том, что Mercurial, похоже, не имеет индекса как git. Я имею тенденцию делать больше изменений, чем иногда, и иногда после редактирования файла я буду использовать git add -p для разделения патча на отдельные коммиты. Если изменения находятся в разных файлах, я мог бы, вероятно, использовать MQ, но в противном случае мне кажется, что мне нужно сначала отменить изменения.

Возможно, есть расширение для Mercurial, которое предоставляет функции, подобные индексу?

4b9b3361

Ответ 1

Вы правы, что нет индекса git -style. Вы можете использовать hg record (распространяется с Mercurial) или hg crecord. Оба позволяют вам выбирать для каждого файла или для каждого столбца при совершении. crecord является более сложным, но требует проклятий.

ОБНОВЛЕНИЕ (2016-11-19)

Функциональность расширения crecord теперь доступна в основном Mercurial. Кроме того, использование лучше интегрировано. Предпочтительным способом фиксации выбранных фрагментов является

$ hg commit --interactive

По умолчанию это ведет себя как старая команда записи. Чтобы получить интерфейс curses, как в старой команде crecord, установите это в HGRC:

[ui]
interface = curses

Ответ 2

Существует два способа разделить набор изменений, в зависимости от того, были ли вы уже внесены изменения, которые вы хотите разделить:

Чтобы выборочно зафиксировать изменения из вашего рабочего каталога (если вы еще не сделали никаких изменений):

  • Используйте hg record. (Это похоже на использование git commit --patch.)

Чтобы разбить существующий набор изменений (если вы уже внесли свои изменения):

  • Используйте hg histedit и выберите параметр редактирования в наборе изменений, который вы хотите отредактировать. (Это похоже на использование git rebase -i.)

  • Используйте hg record для выборочной фиксации изменений в виде отдельных наборов изменений.

  • Используйте hg histedit --continue, когда закончите. Остальные незафиксированные изменения будут включены в окончательный набор изменений.

Как уже упоминалось, вы можете использовать hg crecord вместо hg record.

Ответ 3

Вам может быть интересно прочитать эту статью, в которой объясняется, как другое расширение меркуриума, очереди очередности, как индекс git на стероидах:

http://stevelosh.com/blog/2010/08/a-git-users-guide-to-mercurial-queues/