Сценарий:
У меня есть 2 репозитория Hg: один, который отслеживает репозиторий SVN, скажем SVN-track, и локальный репозиторий pure-Hg, в который я загружаю ревизии из первого.
Я помещаю наборы изменений из репозитория pure-Hg в репозиторий SVN-track, а затем перемещаю изменения в репозиторий SVN-track до тех пор, пока история хороша и прямолинейна, поэтому я могу перейти в репозиторий SVN.
После того, как я нажимаю на SVN, hgsubversion извлекает набор изменений из SVN и удаляет исходный набор изменений. Я так понимаю, он отслеживает (но ... почему бы просто не сохранить оригинал и не отслеживать его?).
Проблема:
Теперь, если вы так долго зависали, возникает проблема: я хочу вернуть наборы изменений SVN в репозиторий pure-Hg, но все исходные наборы изменений возвращаются как дубликаты (но с другим узлом ids) на другой голове. Я мог бы перенастроить все ревизии, которые я добавил в репозиторий pure-Hg, но тогда я потеряю историю, и, действительно, это кажется слишком большим трудом. Я мог бы просто жить с ревизиями вытянутого SVN с дублированным контентом и объединять локально, но это делает результирующие отталкивания обратно на SVN-track все труднее и труднее.
Вопросы:
- Есть ли лучший способ выполнить этот рабочий процесс, о котором я не могу догадаться без посторонней помощи?
- Если нет, как мне заменить исходные ревизии, которые hgsubversion извлекает из SVN, в pure-Hg?
- Почему hgsubversion (по большей части замечательный инструмент для включения) должен возвращать наборы изменений SVN только для их отслеживания, не может ли он просто сохранить исходный набор изменений и добавить строку в
.hg/svn/rev_map
, указывающую исходный идентификатор набора изменений? - Если да, то какой в этом трюк?
hg graft
. Проблема на самом деле заключается в обманутых ревизиях из hgsubversion. - person codekaizen   schedule 01.12.2011