Как вы оцениваете использование новой команды "hg rebase"?

Как "hg rebase" относился к тебе до сих пор? Вы обнаружили какие-либо ошибки или ошибки? В каких ситуациях он заменяет или дополняет mq?

3 ответа

Решение

Rebase очень удобен в простом случае (нет или несколько конфликтов слияния), но если у вас их много, это может быть более проблематично, чем обычный слияние + коммит:

Rebase изменяет ваши коммиты и изменяет историю, и по умолчанию удаляет ваши оригинальные коммиты. Это имеет ряд последствий, которые могут быть довольно опасными, если они ударили вас в плохой момент:

  • Нет способа увидеть, как вы разрешили конфликты. (то есть разница между вашим исходным коммитом и ребазом, если вы не решите сохранить их и вручную удалить их перед нажатием)
  • Нет способа проверить каждую перебазированную ревизию слитно нормально, компилируется и работает нормально перед их фиксацией. Вы перебазируете, ваши коммиты меняются. (то же исключение, что и выше)
  • Если вы действительно делаете распределенные вещи и делитесь / извлекаете из многих источников, вы должны быть предельно осторожны, чтобы не делиться коммитами, которые вы собираетесь перебазировать.
  • Кроме того, если в приведенном выше сценарии вы случайно произвели ребазинг, а затем получили от кого-то эти предбазисные коммиты, вы получаете двойной набор коммитов и вам необходимо "hg раздеть" один из них. (Я не пытался объединиться здесь.)

Проблема в том, что rebase редактирует историю. Что и делает SVN при обновлении. Так что это определенно то, что вы могли бы использовать, но если у вас много невыполненных коммитов и вы ожидаете много конфликтов, я рекомендую вместо этого слияние.

Самое большое преимущество перед MQ (Mercurial Queues) состоит в том, что когда вы помещаете исправленный в очередь патч на измененный базовый слой, вы в конечном итоге получаете файлы.rej и должны вручную исправить патч. С помощью rebase вы получаете слияние, и ваши стандартные инструменты слияния-запуска запускаются.

Я вижу проблемы с тегами, указывающими на перебазированную ветку.

.hgtags @ XXXXXXXXXXXX, строка 2: тег "XXX" относится к неизвестному узлу

Кажется, что теги не были преобразованы правильно.

Другие вопросы по тегам