Могу ли я восстановить историю репозитория SVN из локального репозитория git-svn?

Наша команда разработчиков в настоящее время использует SVN для управления разработкой наших веб-приложений. Разработчик, управляющий сервером SVN, пытается перенести его со старого сервера Win XP на другой сервер, но попытаться вывести дамп хранилища не удается (повреждение или что-то в этом роде). Почему это не так - это отдельный вопрос.

Разработчик, управляющий репозиторием SVN, предложил экспортировать текущий HEAD старого репо для использования в качестве основы нового репозитория SVN, но мы потеряем всю нашу историю SVN. Я использую git-svn локально, что означает, что у меня есть 1,5 года коммитной информации, хранящейся локально. Есть ли способ получить эти коммиты из git-svn и поместить их в новый репозиторий SVN?

1 ответ

Если вы создаете новое пустое репозиторий SVN, можете ли вы вставить все коммиты из git-svn прямо в репо? (не использовал git или git-svn, но это то, что я сделал бы с одним из моих репозиториев hg, если бы мне нужно было поместить его в репозиторий svn)

Редактировать: мне удалось заставить это работать с ручным перебазированием через Mercurial. Единственное, что кажется особенным, это ручная перебазировка вместо автоматической перебазировки svn. Вы можете попробовать это в git-svn перед тем, как добавить в смесь Mercurial.

  1. Создать новый SVN Repo: svnadmin create targetSVN
  2. Сделайте начальную фиксацию на новом репозитории SVN:

    svn co file://targetSVN svnCopycd svnCopy
    touch test
    svn add test; svn commit -m "Initial Import"

  3. Проверьте репо через hg: hg clone file://targetSVN hgCopy; cd hgCopy
  4. Вытащить изменения из мерзавца (через hg-git): hg pull git://yourrepo.git
  5. Ручная перебазировка: hg rebase -s tip -d 0 (0 должен быть исходный SVN коммит, и tip должен быть главой того, что вы вытащили из мерзавца. Убедитесь, что наборы изменений git являются линейными (без слияний!). Замена tip для фактического номера набора изменений головы git (найден через hg heads) если необходимо). Примите все удаленные изменения, когда он спрашивает о конфликтах.
  6. hg push пока все изменения в репозитории svn. Это толкает 1 набор изменений за раз.
Другие вопросы по тегам