Рабочий процесс при использовании HG Subversion для отправки в SVN

Этот вопрос очень похож на вопрос, заданный в этом вопросе, но У меня возникли проблемы после обходного пути.

Проблема:

В основном у меня есть сервер подрывной деятельности и постоянный локальный клиент. Расширение hg-subversion позволяет Mercurial выступать в качестве клиента подрывной деятельности. Это идеально для меня, потому что я могу создавать неограниченное количество функциональных веток из моей ветки разработки Subversion и объединять их по своему усмотрению.

Из-за ограничений Subversion я не могу зафиксировать слияние веток в репозитории Subversion. Фактически, мне не нужно фиксировать каждое слияние веток, я просто хочу, чтобы заголовок ветки "по умолчанию" был привязан к SVN.

Предлагаемое решение:

Пользователь Харви рекомендовал изменить мой рабочий процесс, включив в него клон hgsubversion, предназначенный только для hg, для разработки.

Процитирую Харви:

Уловка состоит в том, чтобы изучить модифицированный рабочий процесс hg ‹-> hgsubversion ‹-> svn. Как только вы «поймете», как это работает, у вас не будет никаких проблем. Вы просто наберете еще несколько команд. На самом деле я начал писать сценарии, чтобы упростить этот повторяющийся процесс. Типичный поток: [в репозитории "hg"] фиксирует кучу изменений; подтолкнуть их к "hgsubversion"; [переключиться на "hgsubversion"] hg update (это необходимо для hgsubversion); hg push to "svn" (который автоматически повторно вытягивается после того, как вы нажимаете и удаляет ваши наборы изменений локально); [вернуться к "hg"] hg вытащить из "hgsubversion"; hg удаляет старые дубликаты b / c «hg» не является клоном hgsubversion и не умеет автоматически удалять старые наборы изменений.

Проблема, с которой я столкнулся:

Я застреваю в точке, где я запускаю hg push из hgsubversion в репозиторий svn. Я все еще получаю сообщение об ошибке: «Прерывание: извините, не удается найти родительский элемент svn для ревизии слияния».

По общему признанию, я не на 100% знаю, как hgsubversion подталкивает ревизии к svn. Честно говоря, я хотел бы видеть состояние, в котором моя локальная копия отправлена ​​на сервер svn.

Холп?


person Joe    schedule 31.01.2011    source источник


Ответы (2)


Я решил ответить на свой вопрос для архивных целей (и для тех, у кого такая же проблема).

Я нашел еще один похожий вопрос, где ответ был просто сформулирован, вы не можете сделай это. Пожалуйста, обратитесь к приведенной выше ссылке и проголосуйте за ответ Эрика-Карла, если это было полезно для вас. Он предлагает обходной путь для восстановления.

person Joe    schedule 31.01.2011

Использование знаний HgSubversion

Если я правильно понял вопрос, hgsubversion отправит только вашу текущую версию.

например если вы сделали 10,11,12, а затем объединили 13 из ветки разработчика. Ты сможешь

hg up 12
hg push

Из-за того, как он будет выполнять перестановки и т. Д., Вы в конечном итоге нажмете на 12, а затем обновитесь до 13, но у меня это работает.

Новая функциональность hg

Используйте меркуриальные фазы и отметьте изменения, которые вы не хотите публиковать, как секретные. Конечно, это предотвратит отправку в другие репозитории.

Используйте корпоративную политику

Другая приятная ситуация в нашей работе заключается в том, что у всех коммитов кода должен быть рецензент и проблема. Если что-то не предназначено для svn (но есть в нашем репозитории team / spike), я не помещаю эту информацию, и любые аварии останавливаются сбоем ловушки перед фиксацией.

person Stephen    schedule 15.05.2012