【自主学習の記録 part2】Git LFSの実験


Git LFS

前回Git LFSについて学習しましたが、試してみたい事を思いついたのでやってみました。

LFS管理対象ファイルが格納されたディレクトリを移動した場合

LFSで管理されたファイルの実体は、プロジェクトのディレクトリとは異なる場所に格納されています。
この実体ファイルが格納されたディレクトリを例えばGitの移行作業時の移行漏れが発生してしまった場合等により参照できなくなった場合どうなるか試してみました。
まず以下プロジェクトに格納されているLFS管理対象のpngファイルをクリックします。

pngファイルの中身は以下の通りです。
以前の記事で使用した画像ファイルとなっています。

次に現在LFS管理の実ファイルの場所をサーバー上で確認します。
場所は環境によって異なるかもしれませんが、私の場合はデフォルトのまま変更していませんでしたので以下の場所に格納されています。

/var/opt/gitlab/gitlab-rails/shared/lfs-objects

中身はこうなっていました。

[root@localhost ~]# ll /var/opt/gitlab/gitlab-rails/shared/lfs-objects/
合計 0
drwxr-xr-x. 3 git git 16 11月 29 19:38 7e
drwxr-xr-x. 3 git git 16 12月  6 15:41 94
drwx------. 5 git git 46 11月 29 19:38 tmp

上記lfs-objectsディレクトリはGitLabの設定ファイルgitlab.rbのlfs_storage_pathというセクションで参照されています。
該当の設定を表示したい場合は、以下のコマンドを実行します。

cat /etc/gitlab/gitlab.rb | grep lfs_storage_path

上記コマンドで表示されたLFS管理対象ファイルの実ファイル格納先ディレクトリ名lfs-objectsを一時的に下記の通りlfs-objという名前に変更してみました。

mv /var/opt/gitlab/gitlab-rails/shared/lfs-objects /var/opt/gitlab/gitlab-rails/shared/lfs-obj

この状態でGitLabのプロジェクト画面から対象のpngファイルを開いてみます。
すると以下の通りファイル名しか表示されていない状態となりました。
予想では404エラーあたりが表示されるかと思っていましたが特にエラー画面にはならずに破損ファイル?として表示はされたようです。

この状態でクローンしてみました。
すると以下の通りpngファイルのダウンロード時にエラーが表示され、クローンに失敗しました。

LFSのディレクトリが無いので怒られているのでしょうか。
ひとまず先程リネームしたディレクトリ名を元に戻してみます。

mv /var/opt/gitlab/gitlab-rails/shared/lfs-obj /var/opt/gitlab/gitlab-rails/shared/lfs-objects

上記コマンド実行後に再度GitLab上のプロジェクトからpngファイルを開いてみましたところ、正常に画像が表示されました。
特に見た目に変化は見られませんが、以下はlfs-objectsディレクトリ名を元に戻した後の画面となります。

次にGit Bashから再度クローンを実施してみます。
今度は特にエラーなく完了しました。

以上で実験は終了です。
次回はまだ検討中です。