Добавление изменений от одного Подвижного репозитория до другого

Когда изменение VCS для моего FakeItEasy проекта от SVN до Подвижного на Google Code I было немного слишком нетерпеливым (я забавен как этот). То, что я сделал, просто проверяло последнюю версию из SVN и затем фиксировало тот контроль как первый пересмотр нового Подвижного repo. Это, очевидно, имеет эффект, что вся история потеряна.

Позже, будучи немного лучше приученным к Подвижному я понял, что существует такая вещь как "преобразовывают расширение", которое позволяет Вам преобразовывать SVN repo в Подвижный repo. Теперь то, что я хочу сделать, должно преобразовать старый SVN repo и затем иметь все массивы изменений от в настоящее время существующего Подвижного repo, импортированного в это, преобразовал repo кроме самой первой фиксации к Подвижному.

Я преобразовал SVN repo в локальный Подвижный repo, но теперь, когда я застреваю. Я думал, что смогу использовать расширение преобразования для обеспечения текущего Подвижного репозитория в преобразованный, и наличие карты соединения встык удаляют первую фиксацию, но я, может казаться, не заставляю это работать.

Я также попытался просто использовать, преобразовывают без карты соединения встык для получения всех массивов изменений от текущего Подвижного repo в преобразованный и переоснову вторая версия в токе к последней фиксации от старого репозитория SVN, но я не могу заставить это работать также.

Для создания это более ясное позволяет, говорят, что у меня есть эти два репозитория:

A: revA1-revA2
B: revB1-revB2-revB3 (Where revB1 is actually a copy of revA2)

Теперь я хочу объединить эти два в новый репозиторий, содержащий это:

C: revA1-revA2-revB2-revB3

8
задан Patrik Hägne 21 April 2010 в 16:27
поделиться

2 ответа

Пока вы меняете хеши в новых ревизиях (а вы это делаете), вы можете просто использовать экспорт и import (или команда transplant , которая является оболочкой для обоих).

Вы уже выполнили преобразование, и это здорово, теперь войдите в репозиторий B и выполните:

hg export -o 'changeset-%R.patch' 1:tip

, который создаст набор изменений - ##. Patch для каждого набора изменений в репозитории B, кроме первого (с нулевым номером).

Теперь перейдите в репозиторий C и импортируйте их:

hg import $(ls *.patch | sort -V)

Все это должно применяться правильно, если действительно revA2 и revB1 идентичны.

11
ответ дан 5 December 2019 в 15:21
поделиться

Вы можете получить изменения из несвязанного репозитория с помощью "hg pull --force"

Вот простой пример использования:

настроить te st каталоги

C:\temp>mkdir hgtest
C:\temp>cd hgtest
C:\temp\hgtest>mkdir a
C:\temp\hgtest>mkdir b
C:\temp\hgtest>mkdir c

сделать репозиторий a

C:\temp\hgtest>cd a
C:\temp\hgtest\a>hg init
C:\temp\hgtest\a>echo line one >> file.txt
C:\temp\hgtest\a>hg add file.txt
C:\temp\hgtest\a>hg ci -m "check in one"
C:\temp\hgtest\a>echo line two >> file.txt
C:\temp\hgtest\a>hg ci -m "check in two"
C:\temp\hgtest\a>echo line three >> file.txt
C:\temp\hgtest\a>hg ci -m "check in three"

сделать репозиторий b

C:\temp\hgtest\a>cd ..\b
C:\temp\hgtest\b>copy ..\a\file.txt file.txt
C:\temp\hgtest\b>hg init
C:\temp\hgtest\b>hg add file.txt
C:\temp\hgtest\b>hg ci -m "check in b one"
C:\temp\hgtest\b>echo line four >> file.txt
C:\temp\hgtest\b>hg ci -m "check in b two"
C:\temp\hgtest\b>echo line five >> file.txt
C:\temp\hgtest\b>hg ci -m "check in b three"

сделать репозиторий c сначала клоном a, затем внести изменения из b

C:\temp\hgtest\b>cd ..\c
C:\temp\hgtest\c>hg clone C:\temp\hgtest\a .
C:\temp\hgtest\c>hg pull --force C:\temp\hgtest\b
C:\temp\hgtest\c>hg merge
C:\temp\hgtest\c>hg ci -m "check in c one"
0
ответ дан 5 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: