How to import git repositories with large files?

半城伤御伤魂 提交于 2019-11-28 14:28:44

You can now use git lfs migrate built-in command to both assess which files is best to migrate and also do the actual history-rewriting.

See git-lfs migration tutorial for more details.

The easiest way I found was taking advantage of git filter-branch and the BFG Repo-Cleaner by rtyley (I used version 1.12.12):

  1. Prerequisite: you need to have git lfs installed

  2. Create a new repository on GitHub Enterprise. You'll import your external Git repository to this new repository.

  3. Clone the repository you want to migrate to a local folder:

$ git clone --mirror git@oldgithost:repo
$ cd repo.git
# mirror into a local directory
  1. Rewrite the history to lfs-track your large files1:
$ git filter-branch --tree-filter 'git lfs track "*.{zip,jar}"' -- --all
# writes the patterns to lsf-track into .gitattributes
  1. Use the BFG to extract the relevant files into Git LFS
$ java -jar ~/usr/bfg-repo-cleaner/bfg-1.12.12.jar --convert-to-git-lfs '*.zip'
$ java -jar ~/usr/bfg-repo-cleaner/bfg-1.12.12.jar --convert-to-git-lfs '*.jar'
# Convert large files (I couldn't find a one-liner for multiple patterns)
  1. Push to your GitHub enterprise remote:
$ git push --mirror https://hostname/ghuser/repo.git
# Pushes the mirror to the new GitHub Enterprise repository
  1. Delete temporary dir:
$ cd ..
$ rm -rf repo.git

Notes

1 Due to the high I/O, it is recommended to rewrite the history into a temporary directory off-disk with the -d option, e.g. on tmpfs.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!