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

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

Проблема:

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

Из-за ограничения подрывной операции я не могу передать слияние ветвей в репозиторий subversion. На самом деле, мне не нужно совершать каждое слияние веток, я просто хочу, чтобы головка ветки "default" была привязана к SVN.

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

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

Процитировать Харви:

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

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

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

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

Halp?

Ответ 1

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

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

Ответ 2

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

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

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

hg up 12
hg push

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

Новая функция hg

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

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

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