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

Преобразуйте SVN-код для использования git (git -svn)

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

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

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

4b9b3361

Ответ 1

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

  • Сделайте полный клон вашего дерева SVN с помощью git -svn во временный каталог. Убедитесь, что вы используете ту же ревизию, что и существующая проверка.
  • Переместите папку ".git" с верхнего уровня git -svn checkout на верхний уровень проверки SVN.
  • Затем вам нужно либо сообщить Git игнорировать каталоги .svn, либо вы можете удалить их все.
  • Удалить git -svn checkout.
  • Теперь вы можете манипулировать существующими файлами с помощью Git и git -svn.
  • Сделайте "git статус" и надейтесь, что он говорит, что изменений нет.

Ответ 2

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

Ответ 3

Я предполагаю, что вы, вероятно, хотите сохранить историю. Однако, если вы (или кто-либо еще, кто спотыкается на этой странице) не нуждается в истории, вы можете использовать функцию "экспорт", как описано здесь: fooobar.com/questions/83320/....

Ответ 4

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

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

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