Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Я предполагаю, что вы, вероятно, хотите сохранить историю. Однако, если вам (или кому-либо другому, кто наткнулся на эту страницу) не нужна история, вы можете использовать & Quot; export & Quot; как описано здесь: https://stackoverflow.com/a/419475/2437521 .

Другой способ сделать это, который не изменяет исходную рабочую копию 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.
  • git apply -p0 patch.diff в начало созданного ранее репозитория Git.
  • Запустите git status, чтобы применить исправление к рабочему дереву репозитория Git.
  • Теперь вы можете просмотреть изменения, используя git add и git commit / <=> их, чтобы сохранить их в локальном хранилище.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top