Home > Archives > 04 November 2020

04 November 2020

GitLab のリポジトリに対して履歴をさかのぼって Git LFS 化

GitLab のドキュメントにあった方法でやってみた: https://docs.gitlab.com/ee/topics/git/lfs/migrate_to_git_lfs.html

まず,BFG を取ってくる.java で実装されているので jar を落としてきて準備完了.こんな便利な道具を作ってくださった作者に感謝.

あとはおよそドキュメントの流れに従って作業:
  1. とりあえず,--mirror つけて git clone する:git clone --mirror https://username@servername/gitlab/foo/bar.git
  2. BFGで指定のファイルを履歴をさかのぼって LFS 化する(対象ファイルを含むコミットを差し替えたりしてくれる):java -jar bfg.jar --convert-to-git-lfs "*.mp4" --no-blob-protection bar.git
  3. 落としてきた bar.git ディレクトリに移って,差し替えられて要らなくなったコミットなどを消してしまう: cd bar.git; git reflog expire --expire=now --all && git gc --prune=now --aggressive
  4. そのまま git lfs インストール:git lfs install
  5. GitLabの設定でリポジトリの master をプロテクトしてるなら解除する
  6. 強制 push する:git push --force
  7. リポジトリのプロテクトを必要ならまた入れる

ドキュメントだとこの後にゴニョゴニョあるけど,.gitattributes とかは BFG が既に入れていたので新たに git clone する分には気にしなくて良さげ.

ということで,これでリポジトリ自体は小さくなった.LFS が大きくなったけど.

Home > Archives > 04 November 2020

Search
Feeds

Page Top