Yura YuLife

ITエンジニアの覚え書き。

BitBucket で Git LFS の転送に失敗する場合の対処法

動作環境

Git LFS でサイズの大きいファイルの転送に失敗する場合

Git LFS を用いて BitBucket にサイズの大きいファイルを push する場合、 timeout エラーが発生して失敗することがあります。

特に HTTPS ではなく SSH で接続している場合に、起きやすいようです。

何度 push しても失敗する場合は Bitbucket LFS Media Adapter を使うのが有効です。

Bitbucket LFS Media Adapter の導入方法

Bitbucket LFS Media Adapter のページから Linux 64-bit 用のファイルをダウンロードします。

ファイルを展開し、git-lfs-bitbucket-media-api の実行ファイルをどこか適当な場所に配置します。

# ファイルの解凍
$ unzip GitLfsBitbucketAdapter-linux-amd64-1.0.6.zip
# 例えば /usr/local/bin/ にコピーする
$ sudo cp GitLfsBitbucketAdapter-linux-amd64-1.0.6/git-lfs-bitbucket-media-api /usr/local/bin/

そして、 git 側の設定で BitBucket に Git LFS でファイルを転送する場合に Bitbucket LFS Media Adapter を利用するように設定します。

# 例えば /usr/local/bin/git-lfs-bitbucket-media-api に置いた場合
$ git config --global lfs.customtransfer.bitbucket-media-api.path /usr/local/bin/git-lfs-bitbucket-media-api

あとは通常通り、 git lfs track large-file.zip とか git push すれば、 Bitbucket LFS Media Adapter を使ってファイルを転送してくれます。

Bitbucket LFS Media Adapter の利点

公式ページによると Bitbucket LFS Media Adapter は以下のような特徴があるとのこと。

  • アップロード・ダウンロードを中断&再開できる
  • 大きなファイルを分割して転送
  • 並列で転送することで転送時間を短縮できる
  • ファイルに変更があった場合のみ再転送が行われる
  • Git コマンドに対して特に変更が必要ない

便利ですね!

参考URL