Преобразование проверки SVN для использования git (git-svn) - PullRequest
31 голосов
/ 06 мая 2009

Я работаю с программным обеспечением, которое хранится в SVN для контроля версий. Я хотел бы использовать git (git-svn), однако программное обеспечение требует много настроек и конфигурации, прежде чем его можно будет использовать. Существуют инструменты, которые позаботятся обо всей настройке, включая проверку всего кода через svn.

Вся документация для git-svn (я смог найти) требует новой проверки, используя git-svn.

Есть ли способ конвертировать существующий svn checkout, чтобы он мог использовать git-svn?

Ответы [ 4 ]

14 голосов
/ 06 мая 2009

Нет. Клон git-svn преобразует весь репозиторий в git. Оформления SVN не имеют всего хранилища и поэтому не могут быть клонированы из. Это основное преимущество переключения с SVN или CVS на распределенную систему (например, git).

11 голосов
/ 06 мая 2009

Вы можете сделать что-то вроде этого:

  1. Сделайте полный клон вашего SVN-дерева, используя git-svn, во временный каталог. Убедитесь, что вы используете ту же ревизию, что и существующая проверка.
  2. Переместите папку «.git» из верхнего уровня проверки git-svn в верхний уровень проверки SVN.
  3. Тогда вам нужно либо указать Git игнорировать каталоги ".svn", либо удалить их все.
  4. Удалить git-svn checkout.
  5. Теперь вы можете манипулировать существующими файлами с помощью Git и git-svn.
  6. Сделайте «git status» и надейтесь, что там написано, что изменений нет.
4 голосов
/ 08 августа 2013

Полагаю, вы, вероятно, хотите сохранить историю. Однако, если вам (или кому-либо еще, кто оступился на этой странице) не нужна история, вы можете использовать функцию «экспорта», как описано здесь:

1 голос
/ 31 августа 2011

Другой способ сделать это, который не изменяет исходную рабочую копию Subversion и не требует от вас ее копирования, - это использование патча:

  1. Сделайте полный клон вашего дерева Subversion, используя git-svn, в новый каталог, который будет хранилищем Git. Убедитесь, что вы используете ту же ревизию, что и существующая проверка. Вы можете использовать git reset --hard :/r<revision>, чтобы заставить его быть той же ревизией после клонирования, где <revision> - это ревизия, до которой обновляется рабочая копия Subversion (см. Это с помощью svn info там).
  2. cd в вашу рабочую копию Subversion.
  3. Используйте svn status, чтобы убедиться, что все новые файлы помечены A (или используйте svn add для их добавления), а все удаленные файлы помечены D (или используйте svn rm для их удаления) .
  4. Запустите svn diff >patch.diff, чтобы создать файл патча.
  5. Скопируйте patch.diff в начало созданного ранее репозитория Git.
  6. cd в начало созданного ранее репозитория Git.
  7. Запустите git apply -p0 patch.diff, чтобы применить патч к рабочему дереву репозитория Git.

Теперь вы можете просмотреть изменения, используя git status и git add / git commit, чтобы сохранить их в локальном хранилище.

...