Преобразуйте SVN-код для использования git (git -svn)
Я работаю с программным обеспечением, которое хранится в svn для контроля версий. Я хотел бы использовать git (git -svn), однако для его использования требуется множество настроек и конфигурации. Есть инструменты, которые заботятся обо всех настройках, включая проверку всего кода с помощью svn.
Вся документация для git -svn (я смог найти) требует новой проверки, используя git -svn.
Есть ли способ конвертировать существующий svn checkout, чтобы он мог использовать git -svn?
Ответы
Ответ 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
, чтобы сохранить их в своем локальном репозитории.