概要
git-lfs は大きいファイルをリポジトリ以外の場所で管理することができる機能です
例えば git-lfs の対象にしたファイルを S3 などで管理することができます
Gitlab はデフォルトで git lfs が使えるようになっています
今回はクライアント側で git-lfs のインストールから実際に push して動作確認するところまでやってみました
なお今回使用する Gitlab は過去にソースコードからインストールした 13.0 のバージョンを使います
環境
- GitLab Enterprise Edition 13.0.0-pre 52c7947911d
- macOS 10.15.4
- git-lfs 2.11.0
git-lfs のインストール
クライアントマシンに git-lfs
をインストールします
git-lfs
はリポジトリに対してクライアント側で設定します
brew install git-lfs
適当にリポジトリを clone
git clone http://gitlab.example.com/root/test.git
リポジトリで git lfs を有効にする
git-lfs を使いたい場合は必ず install する必要があります
cd test
git lfs install
サイズの大きいファイルを作成して push してみる
今回は 1GB のファイルを作成します
大きいサイズのファイルがあればそれを使っても OK です
dd if=/dev/zero of=test_file bs=1024k count=1000
git lfs track "test_file"
作成した test_file
を git-lfs の対象にします
git lfs track
すると .gitattributes
も同時に作成できるのでこれも追加します
git add .
ちなみに git lfs status
すると対象のファイルを確認できます
git config lfs.http://gitlab.example.com/root/test.git/info/lfs.locksverify true
git commit -m "git-lfs test"
git push -u origin master
動作確認
まず Gitlab の WebUI を確認すると対象のファイルが git-lfs 配下で管理されていることが確認できます
次に新たに clone してみます
すると 2 回認証することになると思います
2 回目は git-lfs の認証になるのでそれに成功すると git-lfs の対象のファイルを clone することができます
S3 などにする場合は
デフォルトだと localhost の /home/git/gitlab/shared/lfs-objects
というパスで管理されています
パスを変更したり S3 にしたい場合は gitlab/config/gitlab.yml
の lfs
の項目を変更してプロセスを再起動すれば OK です
トラブルシューティング
push 時に HTTP 413 になる場合
/etc/nginx/sites-available/gitlab
の設定は Gitlab 13.0 では デフォルトで client_max_body_size 0
になっています
git config lfs.http://gitlab.example.com/root/test.git/info/lfs.locksverify true
を実行した際にホスト名などが間違っていないか確認しましょう
あとは push する際のパスワードがあっているか確認しましょう
Gitlab の WebUI にログインする際のパスワードではなく Access Token などを使ってみてください
https://gitlab.com/gitlab-com/support-forum/-/issues/980
もしくは git config の remote の URL を http://gitlab.example.com/root/test.git
から http://root:xxxxxx@gitlab.example.com/root/test.git
という感じでユーザ名とパスワードを指定するようにしてください
あとは単純にディスクのスペースが空いているか確認しましょう
/var/log/nginx/gitlab_error.log
あたりのログに No space left on device
というエラーログが出ている場合があります
パスワードを 3 回求めてくる場合は
git config lfs.cachecredentials true
最後に
Gitlab で git-lfs を使ってみました
Gitlab 側はデフォルトで有効になっているであとはクライアント側で設定するだけですが Gitlab の場合認証部分で少してこづるかもしれません
特に 413 エラーは検索してみるとわかりますが多くの人が遭遇しているエラーかなと思いました
0 件のコメント:
コメントを投稿