Миграция SVN в Git с помощью Git-LFS

У нас есть огромный репозиторий SVN (~ 100 ГБ), который мы пытаемся перенести на Git. Проблема в том, что репо содержит множество двоичных файлов, разбросанных по дереву папок.

Первое, что мы подумали, это перенести бинарные файлы в Git-LFS, но есть несколько вопросов, которые нам нужно решить до этого:

  1. Нам нужно сохранить историю коммитов. Можно ли заменить двоичный файл указателем файла LFS в предыдущих коммитах?
  2. Мы используем несколько филиалов. Во время проверки git-lfs кэширует существующие двоичные файлы, поэтому проверка между ветвями не потребует повторной загрузки этих двоичных файлов снова и снова.
  3. Поддерживает ли Git-LFS наличие одного бинарного файла в разных ветках или нам следует дублировать каждый бинарный файл для каждой ветки на сервере?
  4. Можно ли выполнить частичную проверку двоичных файлов в процессе проверки? Таким образом, при необходимости будут загружены только некоторые части двоичных файлов.
  5. На сервере как должны храниться эти бинарные файлы? Требуется ли серверное приложение для хранения этих двоичных файлов или подойдет простой HTTP/FTP-сервер?

Спасибо


person user6696847    schedule 09.08.2016    source источник


Ответы (1)


Я думаю, что нашел ответ на этот вопрос, хотя сам еще не завершил его тестирование (первый шаг занимает много часов для нашего репозитория). Хитрость из этой документации Atlassian:

https://confluence.atlassian.com/bitbucket/use-bfg-to-migrate-a-repo-to-git-lfs-834233484.html

Это специфично для битбакета, но я думаю, что это будет работать с любым репозиторием git.

Шаг 1. Первым шагом является преобразование проекта SVN в git. Это можно сделать с помощью git-svn, как описано здесь:

https://john.albin.net/git/convert-subversion-to-git

На этой странице также описаны способы переноса авторов и добавления дополнительных сведений, разрешенных для авторов git (настоящее имя и адрес электронной почты).

Шаг 2. Теперь следуйте инструкциям в приведенной выше документации Atlassian, чтобы с помощью «BFG Repo-Cleaner» заменить все «большие файлы» в вашей истории ссылками на git LFS. Это более простой инструмент для выполнения некоторых действий, которые также можно выполнить с помощью инструмента git-filter-branch.

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

EDIT: я забыл обновить это, когда закончил тестирование почти два года назад, и заметил это только сейчас, потому что получил положительный отзыв. Насколько я помню, я закончил использовать git lfs migrate вместо BFG для переноса больших файлов из репо в git LFS. (https://github.com/git-lfs/git-lfs/wiki/Tutorial)

person Svend Hansen    schedule 10.07.2017