Необходимые компоненты
Чтобы выполнить следующие действия, необходимо использовать систему macOS или Linux и установить следующие средства:
- Subversion
- Git, включая
git-svn
- Хранилище больших файлов Git (Git LFS) (см. раздел Установка хранилища больших файлов Git)
Импорт репозитория Subversion
-
Создайте новый репозиторий на GitHub. Чтобы избежать ошибок, не инициализировать новый репозиторий с помощью README, лицензий или файлов Gitignore. Эти файлы можно добавить после отправки проекта в GitHub Enterprise Server. Дополнительные сведения см. в разделе «Создание репозитория».
-
Чтобы убедиться, что на компьютере установлена 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 's/^[ \t]*//' | sort | uniq > authors.txt
svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | 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
, заменив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.
-
-
Git извлекает каждую редакцию SVN и преобразует ее в фиксацию Git. Если в репозитории много файлов или много журнала, этот процесс займет много времени.
Для больших репозиториев команда может заморозить. Если это так, можно начать, завершив команду с помощью ctrl+C, переместив новый каталог и выполнив команду.
git svn fetch
-
Чтобы добавить репозиторий GitHub в качестве удаленного, выполните команду
git remote add origin URL
, заменивURL
URL-адрес для созданного ранее репозитория GitHub .https://github.com/octocat/example-repository.git
-
Чтобы отправить репозиторий в GitHub, выполните команду
git push --mirror origin
.Если репозиторий содержит все файлы, размер которых превышает GitHub Enterprise Server, может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду
git lfs import
, а затем повторите попытку.