Skip to main content

Импорт репозитория Subversion

Вы можете импортировать репозиторий из Subversion, преобразовав репозиторий в Git, а затем отправьте репозиторий Git в GitHub.

Необходимые компоненты

Чтобы выполнить следующие действия, необходимо использовать систему macOS или Linux и установить следующие средства:

Импорт репозитория Subversion

  1. Создайте новый репозиторий на GitHub. Чтобы избежать ошибок, не инициализировать новый репозиторий с помощью README, лицензий или файлов Gitignore. Эти файлы можно добавить после отправки проекта в GitHub. Дополнительные сведения см. в разделе Создание репозитория.

  2. Чтобы убедиться, что на компьютере установлена Git, выполните команду git --version.

    Выходные данные должны быть похожи git version 2.40.0на .

  3. Чтобы убедиться, что git svn на компьютере доступно, выполните команду git svn --version.

    Выходные данные должны быть похожи git-svn version 2.40.0 (svn 1.14.2)на .

    Если вы можете выполнить git успешно, но при выполнении git svnвозникла ошибка, может потребоваться установить git svn отдельно. Мы рекомендуем использовать Homebrew или реестр пакетов Ubuntu, которые включают git-svn пакеты.

  4. Чтобы убедиться, что на компьютере git lfs --versionустановлен Git LFS .

    Выходные данные должны быть похожи git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)на .

  5. Ознакомьтесь с репозиторием Subversion.

    Например, чтобы проверить проект Logisim открытый код из Sourceforge, выполните командуsvn checkout https://svn.code.sf.net/p/circuit/code/trunk.

  6. Перейдите в каталог для репозитория Subversion.

  7. Чтобы получить список авторов в проекте Subversion и сохранить его, authors.txtвыполните следующий скрипт:

    Shell
    svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
    
  8. Обновите authors.txt файл, сопоставляя имя автора, используемое в репозитории Subversion, с именем, которое вы хотите использовать в репозитории Git, с следующим форматом:

    octocat = The Octocat <octocat@github.com>
    
  9. Чтобы преобразовать репозиторий Subversion в репозиторий Git, используйте git svn.

    • Если репозиторий Subversion имеет стандартный формат, с "магистральными", "ветвями" и "тегами", выполните команду git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT, заменив URL URL-адрес репозитория Subversion, на путь к каталогу, PATH/TO/DESTINATION в который нужно клонировать репозиторий, и PATH/TO/AUTHORS.TXT путь к authors.txt файлу.

      Например, чтобы клонировать проект Logisim из Sourceforge в каталог с именем logisim, выполните команду git svn clone -s https://svn.code.sf.net/p/circuit/code logisim --authors-file path/to/authors.txt.

    • Если репозиторий Subversion не является стандартным, можно настроить git svn для обработки репозитория. Дополнительные сведения см. в документации по Git.

  10. Git извлекает каждую редакцию SVN и преобразует ее в фиксацию Git. Если в репозитории много файлов или много журнала, этот процесс займет много времени.

    Для больших репозиториев команда может заморозить. Если это так, можно начать, завершив команду с помощью ctrl+C, переместив новый каталог и выполнив команду.git svn fetch

  11. Чтобы добавить репозиторий GitHub в качестве удаленного, выполните командуgit remote add origin URL, заменив URL URL-адрес для созданного ранее репозитория GitHub .https://github.com/octocat/example-repository.git

  12. Чтобы отправить репозиторий в GitHub, выполните команду git push --mirror origin.

    Если репозиторий содержит все файлы, размер которых превышает GitHub, может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду git lfs import, а затем повторите попытку.

Дополнительные материалы