Как скопировать репозиторий Git на пустой сервер SVN-репо?
Я установил пустой svn на сервере, и я работал над локальными коммитами на этом пути. Теперь я хочу передать свое репо на сервер svn. Для этого я попробовал:
git-svn checkout http://remote.svn.server.com
git-svn dcommit
Git жалуется, что:
Use of uninitialized value in concatenation (.) or string at /usr/bin/git-svn line 411.
Committing to ...
Unable to determine upstream SVN information from HEAD history
Так как я сначала начал на своем локальном компьютере, а в репо онлайн пусто, я не могу найти информацию о том, как сделать эту работу.
Ответы
Ответ 1
Вот что я сделал бы:
git-svn clone http://remote.svn.server.com otherdir
Затем в другой каталог выкладывают изменения локально из вашего предыдущего каталога. Затем вы должны иметь репо git, которое "подключено" через git -svn, и вы должны иметь возможность использовать dcommit на нем.
Это также может быть полезно прочитать.
Ответ 2
Мне нужно что-то подобное недавно, и процесс относительно прост.
Хороший учебник Брэндона Димчефа, "Зафиксировать линейную git историю для подрывной деятельности" (заменяет старая неработающая ссылка), на которой эти шаги основаны.
Начиная с версии git версии 1.6.3, это следующие шаги:
$ svnadmin create svn_repository
$ svn mkdir -m "Initial setup" file:///full/path/to/svn_repository/trunk
$ mkdir gitrepo && cd gitrepo
$ git init
$ echo 'Hello from Git' > file.txt
$ git add file.txt
$ git commit -m "Hello from Git"
$ git svn init --trunk=trunk file:///full/path/to/svn_repository/
$ git svn fetch
$ git branch -a # Lists remotes/trunk
$ git rebase --onto remotes/trunk --root master
# => Applying: Hello from Git etc.
$ git svn dcommit
# => Committing to ... Committed r2 ... etc
Теперь вы можете сделать svn checkout
svn_repository и посмотреть репозиторий git.