Рабочий процесс при использовании HG Subversion для передачи в SVN - PullRequest
10 голосов
/ 31 января 2011

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

Проблема:

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

Из-за ограничения subversion я не могу зафиксировать слияние веток с хранилищем subversion.На самом деле, мне не нужно фиксировать каждое слияние веток, я просто хочу, чтобы заголовок ветки «по умолчанию» фиксировался в SVN.

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

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

Цитируя Харви:

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

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

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

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

Halp?

Ответы [ 2 ]

6 голосов
/ 31 января 2011

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

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

0 голосов
/ 16 мая 2012

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

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

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

hg up 12
hg push

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

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

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

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

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

...