Как вы оцениваете использование новой команды "hg rebase"?
Как "hg rebase" относился к тебе до сих пор? Вы обнаружили какие-либо ошибки или ошибки? В каких ситуациях он заменяет или дополняет mq?
3 ответа
Rebase очень удобен в простом случае (нет или несколько конфликтов слияния), но если у вас их много, это может быть более проблематично, чем обычный слияние + коммит:
Rebase изменяет ваши коммиты и изменяет историю, и по умолчанию удаляет ваши оригинальные коммиты. Это имеет ряд последствий, которые могут быть довольно опасными, если они ударили вас в плохой момент:
- Нет способа увидеть, как вы разрешили конфликты. (то есть разница между вашим исходным коммитом и ребазом, если вы не решите сохранить их и вручную удалить их перед нажатием)
- Нет способа проверить каждую перебазированную ревизию слитно нормально, компилируется и работает нормально перед их фиксацией. Вы перебазируете, ваши коммиты меняются. (то же исключение, что и выше)
- Если вы действительно делаете распределенные вещи и делитесь / извлекаете из многих источников, вы должны быть предельно осторожны, чтобы не делиться коммитами, которые вы собираетесь перебазировать.
- Кроме того, если в приведенном выше сценарии вы случайно произвели ребазинг, а затем получили от кого-то эти предбазисные коммиты, вы получаете двойной набор коммитов и вам необходимо "hg раздеть" один из них. (Я не пытался объединиться здесь.)
Проблема в том, что rebase редактирует историю. Что и делает SVN при обновлении. Так что это определенно то, что вы могли бы использовать, но если у вас много невыполненных коммитов и вы ожидаете много конфликтов, я рекомендую вместо этого слияние.
Самое большое преимущество перед MQ (Mercurial Queues) состоит в том, что когда вы помещаете исправленный в очередь патч на измененный базовый слой, вы в конечном итоге получаете файлы.rej и должны вручную исправить патч. С помощью rebase вы получаете слияние, и ваши стандартные инструменты слияния-запуска запускаются.
Я вижу проблемы с тегами, указывающими на перебазированную ветку.
.hgtags @ XXXXXXXXXXXX, строка 2: тег "XXX" относится к неизвестному узлу
Кажется, что теги не были преобразованы правильно.