Поиск…


Миграция из SVN в Git с использованием утилиты преобразования Atlassian

Загрузите утилиту конверсии Atlassian здесь . Для этой утилиты требуется Java, поэтому убедитесь, что на компьютере, на котором планируется преобразование, установлена JRE Java Runtime Environment JRE .

Используйте команду java -jar svn-migration-scripts.jar verify чтобы проверить, не хватает ли вашей машины какой-либо из программ, необходимых для завершения преобразования. В частности, эта команда проверяет утилиты Git, subversion и git-svn . Он также проверяет, что вы выполняете миграцию в зависящей от регистратора файловой системе. Миграция в Git должна выполняться в зависящей от регистратора файловой системе, чтобы не повредить репозиторий.

Затем вам нужно сгенерировать файл авторов. Subversion отслеживает изменения только по имени пользователя коммиттера. Однако Git использует две части информации, чтобы отличить пользователя: настоящее имя и адрес электронной почты. Следующая команда генерирует текстовый файл, сопоставляющий имена пользователей subversion с их эквивалентами Git:

java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt

где <svn-repo> - это URL-адрес репозитория subversion, который вы хотите преобразовать. После выполнения этой команды идентификационная информация участников будет отображаться в authors.txt . Адреса электронной почты будут иметь форму <username>@mycompany.com . В файле авторов вам необходимо вручную изменить имя пользователя по умолчанию (которое по умолчанию стало их именем пользователя) для их фактических имен. Перед продолжением убедитесь, что все правильные адреса электронной почты проверяются.

Следующая команда будет клонировать репозиторий svn как Git:

git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>

где <svn-repo> - это тот же самый URL-адрес репозитория, который использовался выше, и <git-repo-name> - это имя папки в текущем каталоге для клонирования репозитория. Перед использованием этой команды есть несколько соображений:

  • Флаг --stdlayout сверху говорит Git, что вы используете стандартную раскладку с папками для trunk , branches и tags . Репозитории Subversion с нестандартными макетами требуют указания местоположений папки trunk линии, любых / всех папок branch папки tags . Это можно сделать, следуя этому примеру: git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name> .
  • Эта команда может занять много часов, в зависимости от размера вашего репо.
  • Чтобы сократить время преобразования для больших репозиториев, преобразование можно запустить непосредственно на сервере, на котором размещен репозиторий subversion, чтобы устранить сетевые издержки.

git svn clone импортирует ветви subversion (и соединительные линии) в качестве удаленных ветвей, включая теги subversion (удаленные ветви с префиксом tags/ ). Чтобы преобразовать их в фактические ветви и теги, выполните следующие команды на машине Linux в том порядке, в котором они предоставляются. После запуска git branch -a должен показать правильные имена ветвей, а git tag -l должен показать теги репозитория.

git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag $tagname origin/tags/$tagname; git branch -r -d origin/tags/$tagname; done
git for-each-ref refs/remotes | cut -d / -f 4- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/origin/$branchname"; git branch -r -d "origin/$branchname"; done

Преобразование из svn в Git завершено! Просто push локальное репо на сервер, и вы можете продолжать вносить свой вклад с помощью Git, а также иметь полностью сохраненную историю версий из svn.

SubGit

SubGit может использоваться для однократного импорта репозитория SVN в git.

$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git

Миграция из SVN в Git с использованием svn2git

svn2git - это оболочка Ruby, поддерживающая поддержку SVN git с помощью git-svn , помогая вам переводить проекты из Subversion в Git, сохраняя историю (включая историю стволов, тегов и ветвей).

Примеры

Перенос репозитория svn со стандартным макетом (т. Е. Ветви, теги и соединительные линии на корневом уровне репозитория):

$ svn2git http://svn.example.com/path/to/repo

Чтобы перенести репозиторий svn, который не находится в стандартном макете:

$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir

Если вы не хотите переносить (или не иметь) ветви, теги или туловище, вы можете использовать опции --notrunk , --nobranches и --notags .

Например, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches будет переносить только историю стволов.

Чтобы сократить пространство, необходимое вашему новому репозиторию, вы можете исключить любые каталоги или файлы, которые вы когда-то добавляли, пока вы не должны (например, каталог или архивы сборки):

$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'

Оптимизация после миграции

Если у вас уже есть несколько тысяч коммитов (или больше) в вашем вновь созданном репозитории git, вам может понадобиться сократить пространство, используемое до нажатия вашего репозитория на удаленном компьютере. Это можно сделать, используя следующую команду:

$ git gc --aggressive

Примечание: предыдущая команда может занимать до нескольких часов на больших репозиториях (десятки тысяч коммитов и / или сотни мегабайт истории).

Перенести из Team Version Version Control (TFVC) в Git

Вы можете перенести из командной строки управления базой в git с помощью инструмента с открытым исходным кодом Git-TF. Миграция также перенесет вашу существующую историю, переведя tfs checkins в git commits.

Чтобы разместить решение в Git с помощью Git-TF, выполните следующие действия:

Скачать Git-TF

Вы можете скачать (и установить) Git-TF из Codeplex: Git-TF @ Codeplex

Клонирование решения TFVC

Запустите powershell (win) и введите команду

git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep

Переключатель --deep - это ключевое слово, которое следует отметить, поскольку это говорит Git-Tf, чтобы скопировать вашу историю проверок. Теперь у вас есть локальный репозиторий git в папке, из которой вы вызвали команду cloe.

уборка

  • Добавьте файл .gitignore. Если вы используете Visual Studio, редактор может сделать это для вас, иначе вы можете сделать это вручную, загрузив полный файл из github / gitignore .
  • Утилиты управления удалением RemoveTFS из решения (удалите все файлы * .vssscc). Вы также можете изменить файл решения, удалив GlobalSection (TeamFoundationVersionControl) ... EndClobalSection

Commit & Push

Завершите преобразование, совершив и нажав локальный репозиторий на свой пульт.

git add .
git commit -a -m "Coverted solution source control from TFVC to Git"

git remote add origin https://my.remote/project/repo.git

git push origin master

Миграция Mercurial в Git

Для импорта Mercurial Repo в Git можно использовать следующие методы:

  1. Использование быстрого экспорта :
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD
  1. Использование Hg-Git : очень подробный ответ здесь: https://stackoverflow.com/a/31827990/5283213

  2. Использование импортера GitHub : следуйте инструкциям (подробным) в GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow