Подтвердить что ты не робот

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

Так как я сначала начал на своем локальном компьютере, а в репо онлайн пусто, я не могу найти информацию о том, как сделать эту работу.

4b9b3361

Ответ 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.