2016-08-09 4 views
7

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

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

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

Благодаря

ответ

0

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

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

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

Шаг 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.

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