BitbucketでGit Large File Storage (LFS) を利用する方法

Bitbucketでは 無料プラン でも1GBまでアカウントのストレージが使え、 Bitbucket Pipelines のビルド時にGit LFSの使用が可能になっています。

Git LFSとは

公式サイト では下記のように説明されています。

Git Large File Storage(LFS)は、GitHub.comやGitHub Enterpriseなどのリモートサーバーにファイルのコンテンツを保存しながら、オーディオサンプル、ビデオ、データセット、グラフィックスなどの大きなファイルをGit内のテキストポインターに置き換えます。

出典: git-lfs.github.com (Google Translateによる翻訳)

クライアントのインストール

Debian/Ubuntuではaptでインストールが可能です ( Debian stretch / Ubuntu xenial にはパッケージがありませんのでバイナリーをダウンロードする必要があります)

sudo apt install git-lfs
git lfs install

Xreaで利用する場合はLinux AMD64のバイナリーをダウンロードしてインストールします。

curl -sSL -O https://github.com/git-lfs/git-lfs/releases/download/v2.11.0/git-lfs-linux-amd64-v2.11.0.tar.gz
tar xfz git-lfs-linux-amd64-v2.11.0.tar.gz
PREFIX=~/.local ./install.sh

git lfs installinstall.sh内で実行されます

インストール後、.gitconfigには以下が追加されていました。

# ~/.gitconfig
[filter "lfs"]
  clean = git-lfs clean -- %f
  smudge = git-lfs smudge -- %f
  process = git-lfs filter-process
  required = true

インストール後の確認

git lfs --version
git-lfs/2.11.0 (GitHub; linux amd64; go 1.14.1; git 48b28d97)

Git LFSのセットアップ

対象ファイルの追加と削除

# 追加
git lfs track '<pattern>'

# 削除
git lfs untrack '<pattern>'

対象ファイルの確認

git lfs track

対象ファイルの<pattern>.gitattributesに追加されるのでコミットに含めます。

git add .gitattributes

運用について

bitbucket.org側は特に設定の必要はありませんでした。

セットアップが終っていればpush, pull, cloneなど通常どおりに使用できます。

なんらかの原因でcheckoutが失敗した場合、 以下のコマンドで足りないGit LFSコンテンツをダウンロードできます。

git lfs pull

Bitbucketサポートのリンク