Mercurial + hgsubversion + svn: рассказ о 2 репозиториях ... (или, Заменить ревизии?) - PullRequest
4 голосов
/ 30 ноября 2011

Сценарий:

У меня есть 2 репозитория Hg: один, который отслеживает SVN-репозиторий, скажем SVN-track , и локальный pure-Hg репозиторий, в который я перетаскиваю наборы изменений из первого.

Я помещаю ревизии из моего репо pure-Hg в репо SVN-track , затем перебираю сдвинутые ревизии в репо SVN-track до история хороша и прямолинейна, так что я могу перейти к хранилищу SVN.

После того как я нажал на SVN, hgsubversion извлекает набор изменений из SVN и удаляет исходный набор изменений. Вот как он отслеживает, я понимаю (но ... почему бы просто не сохранить оригинал и не отслеживать это ?).

Проблема:

Теперь, если вы долго зависали, возникает проблема: я хочу перетащить наборы изменений SVN обратно в репозиторий pure-Hg , но все исходные наборы изменений возвращаются как дупл (но с разные идентификаторы узлов) на другой голове. Возможно, я смогу перебазировать все наборы изменений, которые я добавил в репозиторий pure-Hg , но тогда я потеряю историю и, на самом деле, это кажется слишком большой работой. Я также мог бы просто жить с ревизиями pull-SVN с дублированным контентом и локальным слиянием, но в результате получаемые результаты возвращаются к SVN-track все сложнее и сложнее.

Вопросы:

  • Есть ли какой-нибудь лучший способ выполнить этот рабочий процесс, который я не могу предугадать без посторонней помощи?
  • Если нет, то как заменить исходные наборы изменений, которые hgsubversion возвращает из SVN в pure-Hg ?
  • Почему hgsubversion (замечательный инструмент поддержки по большей части) должен возвращать наборы изменений SVN просто для их отслеживания, не может ли он просто сохранить исходный набор изменений и добавить строку к .hg/svn/rev_map, указывающую исходный идентификатор набора изменений?
  • Если это так, что за хитрость?

1 Ответ

0 голосов
/ 01 декабря 2011

Причина, по которой hgsubversion требует откатить изменения, (я ожидаю), потому что, возможно, были другие изменения в svn до того, как вы сделали свой пуш.Каждый коммит в svn включает в себя «rebase-to-tip», который может повлиять на ваш набор изменений.Следовательно, необходимо вернуть его назад, чтобы получить то, что на самом деле произошло, и новые идентификаторы изменений.

Perfarce (расширение Perforce) делает что-то похожее, но объединяет исходные изменения с новым советом, поэтому график действительно имеет смысл,Все еще есть дубликаты всех изменений, которые я делаю.

...