BFG を使用してリポジトリを Git LFS へ移行する

BFG と BFG Repo-Cleaner は、Atlassianではサポートされていないサードパーティ製のユーティリティです。このサポート ドキュメントに記載されている資料は教育のみを目的としており、Atlassian や Bitbucket Cloud によってサポートされているプロセスまたはリソースではありません。ご質問がある場合は、Git LFS サポートのリリース ノートか「BFG Repo-Cleaner」ページをご参照ください。

以下についてご理解ください。

  • BFG はリポジトリの Git 履歴を完全に書き換えます。

  • 移行プロセスは時間を要する場合があります。この期間、ユーザーやワークスペースのすべてのメンバーは既存のリポジトリで作業を行うことができません。

Biitbucket リポジトリの既存の大容量ファイルに対して Git LFS 拡張機能を使用したい場合、それらをトラッキングするだけでは LFS ファイルへの変換は行われません。大容量ファイルは引き続き Git リポジトリの一部であるため、それらのファイルを変換するには、履歴を書き換える必要があります。 

このページでは、bfg-repo-cleaner を使用して Bitbucket リポジトリの Git 履歴を変更する場合の 3 つの段階について説明します。

移行を開始する前に次の点をご確認ください。

  • 変換するファイルに対して十分な LFS ストレージがあること。ファイルの現在のバージョンと履歴に含まれる過去のすべてのバージョンに対応できる必要があります。

  • リポジトリへのアクセス権を持つすべてのユーザーが[すべての変更]をプッシュ済みであることプッシュされていない変更をあとからマージすることはできません。

  • 移行中はリポジトリ権限を調整してプッシュを禁止すること。

  • ローカル マシンに Java Runtime Environment (Java 7 以降) がインストールされていること。

  • https://rtyley.github.io/bfg-repo-cleaner/ から最新の BFG バージョンをダウンロードしていること。

ご質問がある場合は、Git LFS サポートのリリース ノート、または「BFG リポジトリ クリーナー」ページを参照してください。

A. リポジトリの既存のファイルの Git LFS への変換

ターミナルで以降のすべてのコマンドを実行します。

1. リポジトリのクローン

1 git clone --mirror git@bitbucket.org:<username>/<repo-name>.git

mirror フラグでクローンを行うと、ベア リポジトリが作成されます。これを行うと、ユーザーや同僚のすべてのブランチを取得できます。

 <repo-name>.git という名前のフォルダが作成されます。

2. クローンされたリポジトリのバックアップ

Make a backup of the  <repo-name>.git folder so if anything goes wrong you can revert to this version.

3. BFG での Git 履歴の書き換え

https://rtyley.github.io/bfg-repo-cleaner/ から最新の BFG バージョンをダウンロードしていることを確認します。

ダウンロードした bfg-x.x.x.jar ファイルのロケーションへの絶対パスを使用します。

1 java -jar <path to>bfg-x.x.x.jar --convert-to-git-lfs "*.{png,mp4}" --no-blob-protection <repo-name>.git

この例では png ファイルと mp4 ファイル タイプを変換していますが、他のファイル タイプも同様に変換できます。

 This will rewrite all the history of all the branches, replacing all the png or mp4 files with LFS versions.

4. Git LFS の初期化

1 2 cd <repo-name>.git git lfs install

これは、ベア リポジトリに pre-push hook を追加します。

5. 変換したリポジトリを Bitbucket にプッシュして戻す

1 git push --force

これはすべての大容量ファイルを LFS ストレージにプッシュし、新しく書き換えた履歴で Git 履歴を上書きします。

ご質問がある場合は、「BFG リポジトリ クリーナー」ページまたは Git LFS サポートのリリース ノートを参照してください。


B. Git LFS での以降のトラッキングのセットアップ

1. 変換したリポジトリを Bitbucket からクローン

1 git clone git@bitbucket.org:<username>/<repo-name>.git

前述の手順で変換した Git リポジトリをクローンします。

2. Git LFS でのファイルのトラッキング

Git LFS ファイルのトラッキングをローカルにセットアップする」をご参照ください。 


C. ワークスペースのメンバーによる更新されたリポジトリへの変更の許可

各ユーザーがローカルに Git LFS 拡張機能をインストールしている必要があります。手順については、「Bitbucket で Git LFS を使用する」をご参照ください。 

その後、ユーザーはローカルにあるリポジトリの既存のクローンを削除して、LFS が有効化された新しいバージョンをクローンする必要があります。

1 git clone git@bitbucket.org:<username>/<repo-name>.git

その他のヘルプ