Beeeat’s log

Beeeat’s log

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

GitLab を コードリーディングするために Git LFS を入れる

大規模システムのコードを読んで勉強するために,GitLab を コードリーディングすることにしました.

gitlab.com

しかし,普通にgit cloneするだけでは,クローンすることができませんでした.

$ git clone git@github.com:gitlabhq/gitlabhq.git                                                                                      
Cloning into 'gitlabhq'...
remote: Enumerating objects: 1399, done.
remote: Counting objects: 100% (1399/1399), done.
remote: Compressing objects: 100% (1339/1339), done.
remote: Total 1502728 (delta 459), reused 759 (delta 34), pack-reused 1501329
Receiving objects: 100% (1502728/1502728), 733.90 MiB | 10.26 MiB/s, done.
Resolving deltas: 100% (1146442/1146442), done.
git-lfs filter-process: git-lfs: command not found
fatal: the remote end hung up unexpectedly
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

エラー内容にgit-lfs filter-process: git-lfs: command not foundとあったので,Git LFS を導入した上でgit cloneをしてみます.

Git LFS とは?

Git Large File Storageの略で大規模のファイルを管理する時に便利なツールのようです.

git-lfs.github.com

インストール方法

Homebrew でインストールします.

$ brew install git-lfs
$ git lfs install

バージョンを確認します.もし,バージョンが表示されない場合はPCを再起動してから確認してみてください.

$ git lfs version
git-lfs/2.10.0 (GitHub; darwin amd64; go 1.13.6)

もう一度クローンしてみる.

さて,これで Git LFS はインストールされたので,エラーにあったgit-lfs filter-process: git-lfs: command not foundが解消されたかと思います.

気を取り直してもう一度 GItLab をgit cloneしてみましょう!

少し時間は掛かりますが,クローンすることができると思います.

$ git clone git@github.com:gitlabhq/gitlabhq.git                                                                                      
         clone ssh://git@gitlab.com/gitlab-org/gitlab.git -> /Users/ユーザ名/projects/gitlab.com/gitlab-org/gitlab
           git ls-remote ssh://git@gitlab.com/gitlab-org/gitlab.git
           git clone ssh://git@gitlab.com/gitlab-org/gitlab.git /Users/ユーザ名/projects/gitlab.com/gitlab-org/gitlab
    Cloning into '/Users/ユーザ名/projects/gitlab.com/gitlab-org/gitlab'...
    remote: Enumerating objects: 114060, done.
    remote: Counting objects: 100% (114060/114060), done.
    remote: Compressing objects: 100% (10205/10205), done.
    Receiving objects: 100% (1889852/1889852), 738.19 MiB | 684.00 KiB/s, done.
    remote: Total 1889852 (delta 110480), reused 104393 (delta 103838), pack-reused 1775792
    Resolving deltas: 100% (1478442/1478442), done.
    Checking out files: 100% (28689/28689), done.

これで手元の PC に GitLab のソースコードが手に入りました! Zip でダウンロードするやり方もありますが,利用しているエディタが VS Code の場合,「gitlink」という拡張機能があります.

marketplace.visualstudio.com

この拡張機能にある 「goto online link」 という機能を使えば,下記のように GitLab 側のソースコードを経由してマージリクエストを見ることができるので,やはりgit cloneした方が良いのかなぁと思いました.

f:id:bake0937:20200217233042p:plain

まとめと所感

Git LFS を導入し,手元の PC に GitLab をgit cloneすることができました.Git LFS は名前だけ聞いたことあるレベルだったので実際に使う機会ができて良かったです.

さぁここからですね!GitLab は Rails で作られており, Vue.js も採用しているようです!頑張って読んでみるぞ!!!