はじめに
GitLab を試したくてローカルPC 上に立てることにしたときの記録である.
また、別PC でも素早く環境構築ができるように docker-compose を使うことにした.
なお、試行錯誤の中での記録なので誤りもあると思う.
前回は リポジトリを作成して、git clone 〜 push までを実施した.
今回は Git LFS を使ってみる. 1
参考サイトおよび書籍
環境
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
手順
Git LFS は次の条件で使われるようである.
・「リポジトリ単位
」&&「指定したファイル名パターン
」&&「100MB 以上のデータ
」
今回は、**拡張子「zip」、サイズ「123MB」**のデータで検証する.
1. git-lfs をインストールする
バージョン 2.3.4 がインストールされた
$ sudo apt install git-lfs
$ git lfs version
git-lfs/2.3.4 (GitHub; linux amd64; go 1.8.3)
個人的な理由2により 2.13.3 へと upgrade する
$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
$ sudo apt install git-lfs
$ git lfs version
git-lfs/2.13.3 (GitHub; linux amd64; go 1.16.2)
2. リポジトリ「mysoft」を clone する
mysoft
は 前回 作成したリポジトリ (Project) である.
$ git clone ssh://git@server_01/02_software/mysoft
$ cd mysoft
3. リポジトリ「mysoft」で Git LFS が使えるようにする
リポジトリ単位である
$ git lfs install
4. 拡張子「zip」が LFS 対象となるように「.gitattributes」をリポジトリに設定する
#! *.zip を LFS 対象として登録する
$ git lfs track "*.zip"
Tracking "*.zip"
#! 登録できたか確認する
$ git lfs track
Listing tracked patterns
*.zip (.gitattributes)
#! *.zip が LFS 対象になったことは、ファイル「.gitattributes」に書き出されている
$ cat .gitattributes
*.zip filter=lfs diff=lfs merge=lfs -text
#! ファイル「`./.gitattributes`」をリポジトリに push する.
$ git add .gitattributes
$ git commit -m '.gitattributes を追加'
$ git push origin master
5. 投稿前の "おまじない" をする
次の 2つを実施する3
5-1.
ここでは「https://server_01:59443/02_software/ok.git/info/lfs
」の前後を、
それぞれ「lfs.
」「.locksverify
」で囲んでいる.
$ git config lfs.https://server_01:59443/02_software/ok.git/info/lfs.locksverify false
5-2.
$ git config http.sslverify false
恒久対応したければ次をする
$ git config --global http.sslVerify false
補足1.
上記 2コマンドを実行したことで、 ./.git/config に対して次の 4行が追加されている.
[lfs "https://server_01:59443/02_software/ok.git/info/lfs"]
locksverify = false
[http]
sslverify = false
補足2. エラー「x509: certificate is not valid for any names, but wanted to match lfs push」
上記「5-2」を実施することで解消した
補足3. 「5-1」のパスはブラウザでアクセスしてみれば良い
上記の場合だと
「https://server_01:59443/02_software/ok.git/info/lfs
」+「/objects/batch
」より、
↓
https://server_01:59443/02_software/ok.git/info/lfs/objects/batch
にアクセスして、次のような表示がされていれば良い.
6. LFS の検証のために 100MB 超の zip データを作り、push する.
下記🛑より、123MB が push されている.
#! とりあえず 123MB の拡張子 zip データを作る
$ dd if=/dev/zero of=123MB.zip bs=1M count=123
#! git add 〜 commit をする
$ git add 123MB.zip
#! このとき「git lfs ls-files」というコマンドで確認できる.
$ git lfs ls-files
8cb7b1825a * 123MB.zip
$ git commit -m '123MB.zip を追加する'
#! push をする.
#! このとき GitLab への認証が求められる (本記事では「root」「rootroot」を入力する)
$ git push origin master
Locking support detected on remote "origin". Consider enabling it with:
$ git config lfs.https://server_01/02_software/ok.git/info/lfs.locksverify true
Uploading LFS objects: 100% (1/1), 129 MB | 62 MB/s, done. 🛑
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 391 bytes | 391.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://server_01/02_software/ok
8639b5a..c90c782 master -> master
本 docker-compose.yml の場合、LFS 用のデータ置き場は GitLab コンテナの中である↓
$ docker-compose exec gitlab bash -c 'ls -ltr /var/opt/gitlab/gitlab-rails/shared/lfs-objects/'
7. LFS を使っているリポジトリを clone する場合
$ git lfs clone ssh://git@server_01/02_software/mysoft
以上.