SVN для миграции git создает только папку.git

Я пытаюсь перейти с SVN на GIT. Я попытался сделать это с помощью следующих инструментов

git-svn
svn2git

Однако оба инструмента только создали .git папка, без извлеченных файлов и папок (говорит рабочая копия).

С git-svn Я пытался выполнить следующее

git svn clone REMOTE_SVN_REPO
svn2git REMOTE_SVN_REPO

Что именно я делаю не так?

PS Я пробовал поискать в Google, но все блоги утверждают, что обе эти команды должны были создать локальный репозиторий со всеми файлами и папками. Также однажды я конвертировал svn-проект в mercurial, используя hg convert. После преобразования проекта SVN в проект Mercurial я сделал hg up или что-то в этом роде, что принесло все файлы и папки проекта, и я мог легко перенести этот проект на сервер Mercurial. Здесь все, что у меня есть, это папка.git. Какой шаг я пропускаю или что именно я делаю неправильно?

1 ответ

Решение

Что ж, git svn это git backend для удаленных репозиториев SVN Вы можете рассматривать его как двусторонний прокси-сервер - он внутренне эмулирует команды SVN и позволяет своему пользователю использовать данный SVN-репозиторий, как если бы он был GIT-репозиторием. Для остального мира пользователь все еще использует SVN, GIT в этом случае используется как просто удобная оболочка поверх SVN.

Таким образом, с git-svn ты попал в .git папка личное зеркало всех коммитов из репозитория SVN (или только его часть, если вы выбрали несколько коммитов с -r вариант или выбрал несколько веток). Вы можете проверить весь набор импортированных коммитов с gitk --all команда и проверить выбранный коммит с git checkout или просто с помощью RMB нажмите коммит в gitk и выберите соответствующий пункт меню.

Теперь вы должны сначала зафиксировать свои изменения локально (так же, как вы делаете это с обычным GIT-репозиторием), а затем отправить изменения обратно в SVN-репозиторий с помощью git svn dcommit, Во время передачи в репозиторий SVN коммиты будут "переигрываться", как если бы они были сделаны обычным клиентом SVN. Могут быть конфликты и другие проблемы такого рода, как при обычной фиксации SVN. использование git svn fetch, git svn rebase и другие команды, описанные в git svn --help страница, чтобы отменить ваши изменения в обновленном дереве и разрешить конфликты

С другой стороны svn2git способ конвертировать существующий локальный репозиторий SVN (т.е. содержимое базы данных фиксации SVN) в локальный репозиторий GIT Обычно этот шаг выполняется один раз, когда вся команда или компания решают полностью перейти с SVN на GIT. После преобразования вы фактически получите все преимущества GIT (сложное ветвление и слияние, разработка GIT-специфичных систем для проверки кода * и т. Д.)

  • конечно, существуют системы SVN или SCM-нейтральные для проверки кода. Однако такие системы обычно работают с одним данным патчем одновременно, а не с последовательностью упорядоченных изменений. У обоих подходов есть свои плюсы и минусы, но я лично предпочитаю тот, с последовательностями изменений.
Другие вопросы по тегам