こちらの記事は、Szilard Szasz-Toth によって書かれた Git Large File Storage (Git LFS) now in Bitbucket Cloud を翻訳したものです。
近年、あらゆる業界のソフトウェア チームがその実行速度、分散型システム、強力なワークフローを理由に Git を導入してきました。さらに、現代のソフトウェア チームはますます横に広がる関係を持ち、開発者だけではなく設計者、QA エンジニア、技術ライターなども関与するようになっています。こうしたチームが成功を収めるためには、そのままのソース コードだけではなく、リッチ メディアや大容量のデータにおいてもコラボレーションする必要があります。
ただし、Git は大容量のファイルをあまりうまく処理できず、リポジトリがすぐに肥大化してしまうことは周知の事実です。そこでこの度、今年初めのBitbucket Server に続き、お客様の大容量のファイルの処理を改善させるために Bitbucket Cloud で Git LFS をリリースいたしました。そのため、非常に大きなファイルであっても、チームは Bitbucket Cloud を使用することで効率的にバージョンを保存し、コラボレーションを行うことができます。
Git LFS が重要な理由
Git は元々ソースコード用に最適化されていました。統合や圧縮が容易で、相対的にファイルの大きさが小さいため、すべての履歴をあらゆる場所に保存することが可能でした。ただし、これによって、大きなバイナリ ファイルの履歴を見返そうとすると非効率となり、速度が低下します。たとえば、バイナリ デルタの圧縮率は低いことが多くあるため、設計者が Git リポジトリに 100 MB の画像を保存してそれらを 9 回変更すると、リポジトリのサイズは約 1 GB にも膨らみます。そのリポジトリを複製するすべての開発者、ビルド エージェント、展開スクリプトは、変更履歴の 1 GB全体をダウンロードする必要があります。これにより、複製にかかる時間が大幅に長くなる可能性があります。設計者がファイルを 99 回変更したらどうなるか想像してください。
Git のこの固有の欠点に対する一般的な解決策は、これらの大容量のファイルを Git の外、ローカルのストレージ システムまたはクラウド ストレージ プロバイダーで保存することですが、これによって全く別の問題が生まれます。リポジトリから大容量のファイルを分ける場合、コードが機能し続けるよう、チームがすべての変更の同期や連絡を手動で行う必要があるのです。
Git LFS を利用すれば、これらの問題にさよならを告げ、Bitbucket Cloud ですべてのファイルを追跡することができます。 Git リポジトリを肥大化させる代わりに、大容量のファイルを並列ストレージで保持し、軽量なリファレンスのみを保存することで、リポジトリを小型化および高速化します。チームがファイルを Git LFS に保存したリポジトリを次に複製したりする際は、変更履歴全体ではなく、リビジョンのチェックアウト済み部分であるリファレンスや関連の大きなファイルのみをダウンロードします。
Git LFS のしくみや既存のリポジトリへの移行方法についての詳細な説明をお聞きになりたい方は、「Git LFS で膨大なファイルを追跡する」でアトラシアンディベロッパーアドボケートの Tim Pettersen のビデオをご覧ください。
Git LFS が適している場面
一般的には、Git を使用して大容量のファイルの管理を簡単に行いたい場合に、Git LFS が適しています。Git LFS を使用することで日常業務が改善される事例をいくつかご紹介します。
- 大規模なテクスチャ、3D、音声ファイルやビデオ ファイルなどを操作するゲーム開発者
- 次々と高くなる解像度を提供するモバイル開発者
- リッチ メディアを使用してページを構築する Web 開発者
- チェックインされた依存性を処理するソフトウェア チーム
- 大規模なデータ セットを操作する調査員
- マルチメディア プロデューサーおよびデザイナー
- データベース スナップショットを使用して機能テストを行う QA エンジニア
- プレゼンテーション スライドを Git に保存する技術エバンジェリスト
Git LFS は SourceTree 内に直接構築可能
SourceTree を使用している場合は、Git LFS を使用したファイルの追跡をワンクリックで行うことができます。 追跡したいファイル タイプを右クリックし、「Git LFS で追跡」オプションを選択するだけです。残りは SourceTree によって行われます。
Git LFS ベータ版でできること
- すべてを一か所で追跡する – 大容量のファイルをソース コードとともに追跡し、別のストレージ システムで手動のバージョン管理を行うことについて、心配する必要がなくなります。
- 大容量のファイルを保存、バージョン管理、共有する – ファイルの大きさにかかわらず、Git を使用してすべての大容量ファイルのバージョン管理を行います。Git LFS を使用することで、大容量の音声ファイル、グラフィック、ビデオ、その他のバイナリを効率的に保存できます。ベータ期間の間、最大 5 ユーザーに対して 1 GB のストレージを取得できます。有料チームの場合、ストレージはユーザー階層に基づきます。
- リポジトリを解放する – Git リポジトリの保存容量を増やしましょう。Git LFS は大容量のファイルを外部に保存するため、実際の Git リポジトリを軽量化します。
- より迅速に複製およびフェッチする – 必要なもののみをダウンロードしましょう。Git LFS は変更履歴全体ではなく、チェックアウト済の大容量のファイルのみをフェッチします。
- Git に集中する – 新しいことを学習する必要はありません。Git LFS では、Git ワークフローへシームレスに統合され、新しいワークフローや新しいコマンド、新しいツールを学習する必要はありません。
すぐにGit を始める
使い始める準備が整ったら、Bitbucket Cloud アカウントに登録してください。 既に Bitbucket Cloud をお使いの方は、左スライドバーの「Git LFS ベータ版」セクションに移動し、試してみたいリポジトリ内でワンクリックすることでアカウントを有効化できます。