Как зафиксировать Git-репо на пустом SVN-сервере репо? - PullRequest
13 голосов
/ 19 января 2009

Я установил пустой 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

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

Ответы [ 2 ]

29 голосов
/ 11 июня 2009

Мне недавно понадобилось что-то подобное, и этот процесс относительно прост.

Есть хорошее руководство от Брэндона Димчеффа, "Зафиксируйте линейную историю мерзавцев в подрывной деятельности" (заменяет старая неработающая ссылка ), на которой основаны эти шаги.

Начиная с 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-репо.

6 голосов
/ 20 января 2009

Вот что я бы сделал:

git-svn clone http://remote.svn.server.com otherdir

Затем в другом каталоге извлеките изменения локально из вашего предыдущего каталога. Тогда у вас должно быть git-репо, «подключенное» через git-svn, и вы сможете использовать dcommit на нем.

Это также может быть полезным чтением.

...