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

Добавление svn-remote в существующий репозиторий git

У меня есть репозиторий git, и моя компания назначила мне пустую репозицию svn для хранения моего кода. Так что я хотел бы просто добавить, что svn repo как удаленный от моего существующего репозитория git и затем нажмите на него.

Теперь все учебники git -svn начинаются с "сначала клонировать репозиторий svn, а затем добавлять код". Это не работает для меня, поскольку у меня уже есть существующий репозиторий git.

Я также нашел несколько руководств по импорту ветвей svn в git repo, но это также не то, что мне нужно, мне нужно импортировать репозиторий git в репозиторий svn.

Я попробовал просто сделать git svn init http://remote-repo, а затем git svn rebase, но это закончилось тем, что "Не удалось определить информацию SVN вверх по рабочему дереву".

Я думаю, этот парень имел ту же проблему, но у него не было ответов. Любые идеи о том, как это сделать?

изменить:

Я сделал несколько дополнительных упражнений, но безуспешно. Я перенес историю git в историю svn и сделал rebase, но это не устранило проблему. Странно. Вот что я сделал.

После git svn init я сделал:

git svn fetch # so now I see the svn history in my git repo - I have two unconnected histories in my repo
git checkout svn-git #checking out svn remote
git checkout -b voracle_svn # putting content of the remote to a branch

Затем в gitk я создал ветвь с именем "graft_child", указывающую на мою первоначальную фиксацию git (начало моей истории git) и перенесенную на HEAD ветки svn:

git checkout graft_child # checking out the start of git repo
git reset --mixed voracle_svn #positioning myself to the HEAD of svn remote
git commit -am "Grafting git repo onto svn" #as the message said

Затем я добавил идентификаторы SHA1 для дочернего и родительского коммитов в .git/info/grafts и resetarted gitk. Gitk теперь показывает одну историю (хотя и с испорченными датами), трансплантат был успешным. Затем я пересобил ветвь svn:

git checkout voracle_svn # checking out the branch wich points to the HEAD of svn repo
git rebase master

Это успешно переадресовано voracle_svn для управления, что означает, что я должен был бы перенаправить свое репо на SVN. Или так я думал, потому что

git svn rebase

снова дал мне "Невозможно определить информацию SVN вверх по истории рабочих деревьев".

Теперь у меня действительно нет идей: - (

4b9b3361

Ответ 1

Короткий ответ

Вы должны инициировать это SVN-репо с некоторой фиксацией клиентом SVN, например так.

$ touch foobar
$ svn add foobar
$ svn ci -m "init svn repo for git svn can detect upstream"

Длинный ответ

если репозиторий svn пуст, когда вы используете git svn clone xxx, клиент git не может обнаружить информацию восходящего svn из истории вашего рабочего дерева, поэтому вам следует запустить репозиторий svn, как описано выше.

Предположим, что ваш локальный /path/to/git_work_tree git - /path/to/git_work_tree, а URL-адрес /path/to/git_work_tree svn - http://path/to/svn_remote_url.

  1. init svn repo от клиента svn. $ svn co http://path/to/svn_remote_url svn_work_tree $ cd/path/to/svn_work_tree $ touch foobar $ svn add foobar $ svn ci -m "init svn repo"

  2. git svn клонирует ваш svn репо на локальный. $ git svn clone http://path/to/svn_remote_url git_svn_work_tree

  3. объединить ваше локальное репозиторий git с git_svn_worktree $ cd/path/to/git_svn_work_tree $ git pull/path/to/git_work_tree

  4. теперь вы наконец можете зафиксировать свой код $ cd/path/to/git_svn_worktree $ git svn rebase $ git svn dcommit

ПОВЕСЕЛИСЬ!