Как применить свернутый ревизионный патч к транку в Mercurial? - PullRequest
0 голосов
/ 16 сентября 2010

Я ищу лучшие практики для выполнения следующих действий:

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

Мой обычный способ сделать это ( расширение rdiff должно быть включено):

hg clone ~/repos/trunk ~/repos/new-collapsed
cd ~/repos/new-collapsed
hg diff ~/repos/new > new.diff
patch -p1 < new.diff
hg commit

Это работает почти хорошо, за исключением случаев, когда в изменениях из ~ / repos / new присутствуют двоичные файлы.Другим способом может быть:

hg clone ~/repos/trunk ~/repos/new-collapsed
cd ~/repos/new-collapsed
hg pull ~/repos/new
hg update
hg rollback
<i>then resolve possible conflicts and manually commit the changes</i>

Оба способа выглядят для меня несколько уродливо и не родным, поэтому я смотрю, как можно упростить эту операцию.Я играл с rebase extension , но, похоже, его команда hg rebase --collapse не работает с описанным выше рабочим процессом.

Любые идеи приветствуются.

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

Звучит как хороший случай для ртутных очередей.

0 голосов
/ 02 июля 2011

Решено: Просто добавьте

[diff]
git = True

в ваш файл hgrc, а затем используйте мое первое решение с расширением rdiff, заменив patch на hg import:

hg clone ~/repos/trunk ~/repos/new-collapsed
cd ~/repos/new-collapsed
hg diff ~/repos/new > new.diff
hg import new.diff
hg commit
0 голосов
/ 16 сентября 2010

Я делаю нечто подобное с расширением histedit .

Мой рабочий процесс выглядит примерно так:

  • клонирование центрального репо
  • commitинкрементные изменения в локальном репо
  • клонировать мое локальное репо, чтобы сделать свернутое репо
  • hg histedit и выбрать / отменить / свернуть ревизии по мере необходимости
  • hg push свернутое репов центральное репо
  • извлечение центрального репо в локальное или обновление локального с нуля

Я гарантирую, что мое локальное репо никогда не будет перенесено в центральное репо, добавив неверный путь default-push кфайл .hg/hgrc в корневом каталоге локального репо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...