Повторный импорт из CVS в Subversion - PullRequest
1 голос
/ 21 октября 2010

Проблема, которую я пытаюсь решить, не отличается от Subversion не синхронизирована с рабочим кодом, самый простой способ обновить Subversion , но несколько отличается.

Я преобразовал (Java)проект из CVS в SVN (с использованием cvs2svn, сохраняя полную историю) - скажем, в версии 1.00

Продолжалась разработка версии 2.00 с кодом в SVN.

Тем временем некоторые исправления были сделаны в CVSпоскольку настройка инструмента разработки была другой.)

Теперь мне нужно эффективно повторно импортировать часть проекта из CVS.

Если бы у меня было

cvs:project/module1 (version 1.00)
           /module2 (version 1.10)

и

svn:project/trunk/module1 (version 2.xx)
                 /module2 (Version 1.00)

Есть ли способ просто повторно импортировать module2 из CVS и сохранить полную историю?

Я снова запустил cvs2svn в репозитории CVS и собиралсязагрузите это в SVN как другой проект, а затем выполните необоснованное слияние - но я не уверен, что это отличная идея.

Я буду поддерживать версию 1.xx в SVN в дальнейшем.

Ответы [ 3 ]

0 голосов
/ 21 октября 2010

Поскольку я собираюсь поддерживать версию 1.xx также и в SVN, и я знаю, в какой момент код расходился, я должен иметь возможность объединять только списки изменений, созданные после перехода на SVN.Похоже, что все будет в порядке.

Я сейчас экспериментирую с этим.

0 голосов
/ 04 ноября 2010

Из номеров версий, которые вы цитируете, похоже, что все коммиты после конвертации на module1 были в Subversion, а все коммиты после конвертации на module2 были в CVS.Если это так, вы можете попробовать следующее:

Снова конвертировать весь проект CVS, используя те же параметры cvs2svn, что и раньше.Если вам повезет, то r0: rN (где N - это некоторое число) результирующего хранилища Subversion согласуется с перекрывающейся частью хранилища Subversion, полученной в результате первого преобразования.В этом случае вы должны иметь возможность «svnadmin dump --incremental -rN: HEAD» из нового хранилища Subversion и «svnadmin load» поверх старого хранилища Subversion.Коммиты в объединенном репозитории не будут в хронологическом порядке, но это незначительное раздражение (и может быть исправлено с помощью некоторых других инструментов за счет перенумерации коммитов Subversion).

(Это не обязательнослучай, когда перекрывающиеся части репозиториев Subversion будут идентичны; cvs2svn использует некоторые эвристики для вывода наборов изменений, и их вычеты могут отличаться из-за других изменений. Но если в каждом репозитории есть идентифицируемые версии «1,00» с идентичным содержимым, тоЯ думаю, что процедура должна работать.)

Сделайте резервные копии, прежде чем попробовать это!

0 голосов
/ 21 октября 2010

Вы можете преобразовать текущий репозиторий CVS в новый фиктивный репозиторий SVN. Используя это, вы можете выбрать ревизии для создания и повторного создания дампов в реальном репозитории SVN. (Я понятия не имею, как это будет относиться к случаю, когда один и тот же файл был изменен как в реальном SVN, так и в CVS / фиктивном SVN. Возможно, вы захотите избежать выяснения этого, воспроизведя выбранные вишневые дампы для конкретного филиал.)

Хотя могут быть и лучшие способы, и это может вообще не сработать. Я только когда-либо конвертировал один репозиторий CVS в репозиторий SVN, и это было непросто. Так что возьмите это с большим количеством соли и сначала запустите его на копии.

...