Как импортировать локальный репозиторий 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