Как импортировать локальный репозиторий git в svn?

Я работаю над локальным репозиторием git, и мне нужно нажать локальный git в существующий репозиторий svn. Мой репозиторий git - это чистый локальный репозиторий git, он был не init, используя git svn clone.

Как импортировать этот локальный репозиторий git в svn?

Желательно, чтобы история импорта git импортировалась в SVN.

В настоящее время SVN-репозиторий представляет собой структуру как:

https://svnrepohost
           /branches
           /tags
           /trunk
                  /projectA
                  /projectB
                  /newProject

Мне нужно импортировать мой репозиторий git в https://svnrepohost/trunk/newProject выше, если папка newProject пуста.

Ответ 1

Я, наконец, решил эту проблему, выполнив следующие шаги:

  • Установите соответствующую папку проекта в svn для импорта, например http://svnrepo/svn/trunk/newProject

  • Создайте новый git -svn репозиторий

    git svn clone http://svnrepo/svn/trunk/newProject

  • Добавьте репо git, которое мы хотим импортировать как удаленный в новый git -svn repo

    git удаленный добавьте источник.. /original - git -repo

  • Потяните все данные из оригинала git -repo

    git мастер создания тяги

  • Восстановить локальный репозиторий против svn

    git svn rebase

  • Зафиксируйте изменения в svn

    git svn dcommit

  • Очистите удаленный

    git удаленное удаление начала

Ответ 2

Самый простой способ сделать это - просто svn import каталог Git. Тем не менее это потеряет вашу историю событий Git.

Прежде всего, убедитесь, что каталог .git не будет импортирован, установив global-ignores в конфигурационный файл Subversion. Откройте файл ~/.subversion/config (который будет выглядеть как C:\Users\username\.subversion\config в Windows), найдите раздел, начинающийся с [miscellany], и добавьте строку непосредственно под показанием, как показано ниже:

global-ignores = .git

(если у вас уже есть строка с global-ignores =, перед которой нет #, а затем просто добавьте .git в конец этой строки.)

Затем запустите следующее:

svn import <path-to-local-git-repository> https://svnrepohost/trunk/newProject

Это должно скопировать содержимое локального репозитория Git на сервер именно там, где вы хотите.

Ответ 3

Вы можете использовать SubGit.

$ svnadmin create repo.svn
$ subgit configure repo.svn                                                                                                                                                              

...                                                                                                                                                                           

            CONFIGURATION SUCCESSFUL                                                                                                                                                                                   

            Adjust '/tmp/repo.svn/conf/subgit.conf' file                                                                                                                                                               
            and then run                                                                                                                                                                                               
                subgit install "repo.svn"                                                                                                                                                                              
            to complete SubGit installation.
$ nano repo.svn/conf/subgit.conf #edit to set git.default.repository=path/to/your/bare/git/repository
$ subgit install repo.svn

Я также рекомендую вам создать голой клон вашего репозитория Git и указать путь к нему (в git.default.repository) вместо исходного репозитория. То есть.

$ git clone --bare path/to/your/original/repository path/to/your/bare/git/repository

После команды "subgit install" репозитории (repo.svn и repo.git) будут синхронизироваться в непрерывном режиме (инициируются с помощью pre-receive hook в Git [, который начинается с нажатия на ваш пустой репозиторий] и pre-commit в SVN). Чтобы остановить синхронизацию, вы можете запустить

$ subgit uninstall repo.svn

Ответ 4

  • git svn clone http://svnrepo/svn/trunk/newProject
  • git удаленный добавить изначальный../оригинальный- git -repo
  • git fetch origin
  • git checkout -b lmaster remotes/origin/master
  • git Мастер переустановки
  • git svn rebase
  • git svn dcommit