Преобразуйте проверку SVN для использования git (git-svn)
-
05-07-2019 - |
Вопрос
Я работаю с программным обеспечением, которое хранится в svn для контроля версий.Я хотел бы использовать git (git-svn), однако программное обеспечение требует большой настройки, прежде чем его можно будет использовать.Существуют инструменты, которые берут на себя всю настройку, включая проверку всего кода через svn.
Вся документация для git-svn (которую я смог найти) требует новой проверки с использованием git-svn.
Есть ли способ преобразовать существующую svn checkout, чтобы она могла использовать git-svn?
Решение
Вы могли бы сделать что-то вроде этого:
- Сделайте полный клон вашего SVN-дерева, используя git-svn, во временный каталог.Убедитесь, что вы используете точно такую же редакцию, как и ваша существующая проверка.
- Переместите папку ".git" с верхнего уровня git-svn checkout на верхний уровень SVN checkout.
- Затем вам нужно будет либо указать Git игнорировать каталоги ".svn", либо вы можете удалить их все.
- Удалите проверку git-svn.
- Там, теперь вы можете манипулировать своими существующими файлами с помощью Git и git-svn.
- Сделайте "git status" и надейтесь, что он скажет, что изменений нет.
Другие советы
Нет.Клон git-svn преобразует весь репозиторий в git.Проверки SVN не содержат всего репозитория и поэтому не могут быть клонированы из него.Это основное преимущество перехода с SVN или CVS на распределенную систему (например, git).
Я предполагаю, что вы, вероятно, хотите сохранить историю. Однако, если вам (или кому-либо другому, кто наткнулся на эту страницу) не нужна история, вы можете использовать & Quot; export & Quot; как описано здесь: https://stackoverflow.com/a/419475/2437521 .
Другой способ сделать это, который не изменяет исходную рабочую копию Subversion и не требует от вас ее копирования, - это использовать патч:
<Ол>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. git apply -p0 patch.diff
в начало созданного ранее репозитория Git. git status
, чтобы применить исправление к рабочему дереву репозитория Git. Теперь вы можете просмотреть изменения, используя git add
и git commit
/ <=> их, чтобы сохранить их в локальном хранилище.