
制作案件でソースコードのバージョン管理にGitを使うのはもはや一般的かと思いますが、大容量ファイルの管理に向いてないのがネックでした。Gitのリモートリポジトリサービスを提供しているBitbucketが、この問題を解決し、大容量ファイルの効率的な管理を可能にする「Git LFS」という機能のベータ版の提供を開始したそうです。
サイト内で大容量の動画や画像を設置する場合はもとより、PSDやAIなどの元素材も管理できるようになるんじゃないか?と期待して記事を読んでみました。ポイントは以下の三点:
- 大容量ファイルは通常のファイル群とは別のストレージに保管され、リポジトリには参照情報だけが保持される。
- クローン時には、Git LFSの参照情報と、チェックアウトするリビジョンに関連付けられた大容量ファイルだけがダウンロードされる。
- SourceTreeを使ってれば右クリック一発でGit LFSを利用可能。
以下、前述の記事をざっくりと要約してみました。
Git Large File Strorage (Git LFS)がBitbucket Cloudに登場
ソフトウェアの開発現場ではデザイナーやライターなど多様な職種のメンバーが、生のソースコードだけでなく様々なリッチメディアや容量の大きなデータを共有して作業するようになってきた。
知っての通りGitは大容量ファイルの管理には向いていない。そこで今回Bitbucket Cloudのユーザーに対してGit LFSのベータ版の提供を開始した。これで本当に巨大な容量のファイルであっても、効率的に保管・バージョン管理・メンバーとの共有ができるようになる。
Git LFSに注目する理由
Gitはソースコードの管理に最適化されてきたのでバイナリファイルの扱いには向かない。例えば100MBの画像ファイルをリポジトリに加えてそのファイルを9回編集するだけでリポジトリのサイズは1GB近くまで増大してしまう。すると、その後にそのリポジトリをクローンする人はその1GB分の履歴をダウンロードしてこなければならなくなる。
今までならそうした大容量のファイルはGitの外で管理するよりなかった。でもそうすると履歴の管理やバックアップなどが煩雑になる。
Git LFSでこうした問題は解決。あらゆるファイルをBitbucket Cloud一箇所で管理できるようになる。リポジトリが莫大なサイズにならないよう、大容量ファイルはソースコードとは別のストレージに保管され、リポジトリ側には軽量なファイルの参照情報だけが保持される。リポジトリをクローンする場合も、Git LFS領域については、軽量な参照情報と、チェックアウトするリビジョンに関連するファイルだけがダウンロードされることになる。
Git LFSについてのさらに詳しい説明や既存のリポジトリへの統合方法などはこちらの動画を参照のこと。
どんな時にGit LFSを使えば良い?
大容量ファイルをGitを使って管理しようと思ったらGit LFSが最適。向いているケースは:
・大容量のテクスチャ、3D、オーディオ、動画を扱うゲーム開発者
・高精細ディスプレイに対応するモバイル開発者
・リッチメディアを含んだページを扱うWEB開発者などなど
Git LFSはSourceTreeに組み込まれている
GitのクライアントとしてSouceTreeを使ってるなら、Git LFSで管理したいファイルを右クリックして「Track in Git LFS」を選択すればOK。あとはSourceTreeがやってくれる。
最後の二章(”What you will get with the Git LFS Beta”と”Git going right away”)は省略しました。
また、以下のスライドを見ると、Git LFSを利用することで様々な不具合が生じるという話もあるので、実用まではもうしばらく様子見かもしれません。
ただ、大容量ファイルが管理できるのはやはり大きな魅力。動作の安定化に加え、各種クライアントの対応(個人的にはPhpStormかTortoiseGitを使ってるので、これらからも右クリ一発とかで設定できるようになってほしい)が成されたなら、本格的に使って行きたいと思います。