Необходимые компоненты
Чтобы выполнить следующие действия, необходимо использовать систему macOS или Linux и установить следующие средства:
- Subversion
- Git, включая
git-svn - Хранилище больших файлов Git (Git LFS) (см. раздел Установка хранилища больших файлов Git)
Импорт репозитория Subversion
-
Создайте новый репозиторий на GitHub. Чтобы избежать ошибок, не инициализировать новый репозиторий с помощью README, лицензий или файлов Gitignore. Эти файлы можно добавить после отправки проекта в GitHub. Дополнительные сведения см. в разделе Создание репозитория.
-
Чтобы убедиться, что на компьютере установлена Git, выполните команду
git --version.Выходные данные должны быть похожи
git version 2.40.0на . -
Чтобы убедиться, что
git svnна компьютере доступно, выполните командуgit svn --version.Выходные данные должны быть похожи
git-svn version 2.40.0 (svn 1.14.2)на .Если вы можете выполнить
gitуспешно, но при выполненииgit svnвозникла ошибка, может потребоваться установитьgit svnотдельно. Мы рекомендуем использовать Homebrew или реестр пакетов Ubuntu, которые включаютgit-svnпакеты. -
Чтобы убедиться, что на компьютере
git lfs --versionустановлен Git LFS .Выходные данные должны быть похожи
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)на . -
Ознакомьтесь с репозиторием Subversion.
Например, чтобы проверить проект Logisim открытый код из Sourceforge, выполните команду
svn checkout https://svn.code.sf.net/p/circuit/code/trunk. -
Перейдите в каталог для репозитория Subversion.
-
Чтобы получить список авторов в проекте Subversion и сохранить его,
authors.txtвыполните следующий скрипт:Shell svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed -E 's/^ *//' | sort | uniq > authors.txtsvn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed -E 's/^ *//' | sort | uniq > authors.txt -
Обновите
authors.txtфайл, сопоставляя имя автора, используемое в репозитории Subversion, с именем, которое вы хотите использовать в репозитории Git, с следующим форматом:octocat = The Octocat <octocat@github.com> -
Чтобы преобразовать репозиторий Subversion в репозиторий Git, используйте
git svn.-
Если репозиторий Subversion имеет стандартный формат, с "магистральными", "ветвями" и "тегами", выполните команду
git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT, заменивURLURL-адрес репозитория 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.
-
-
Git извлекает каждую редакцию SVN и преобразует ее в фиксацию Git. Если в репозитории много файлов или много журнала, этот процесс займет много времени.
Для больших репозиториев команда может заморозить. Если это так, можно начать, завершив команду с помощью ctrl+C, переместив новый каталог и выполнив команду.
git svn fetch -
Чтобы добавить репозиторий GitHub в качестве удаленного, выполните команду
git remote add origin URL, заменивURLURL-адрес для созданного ранее репозитория GitHub .https://github.com/octocat/example-repository.git -
Чтобы отправить репозиторий в GitHub, выполните команду
git push --mirror origin.Если репозиторий содержит все файлы, размер которых превышает GitHub, отправка может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду
git lfs import, а затем повторите попытку.