GitはGitHubを使いつつ、Git LFSはローカルのプライベートサーバーで運用する方法について調べてみました。(VPSなどで運用することもできますが、セキュリティには気を付けてください。)
※GitHubの無料プランではGit LFSのストレージ容量が1GBかつ転送量も1GB/月という制限があり、この制限を回避したいという理由です。
Git LFSに対応した実装はGit LFSのWikiにまとめられていますが、今回はgiftlessというPythonで実装されたものを使ってみました。
giftlessをサーバーにインストール
ソースコードのダウンロード
$ git clone https://github.com/datopian/giftless.git $ cd giftless
Pythonの環境構築
$ python3 -m venv venv $ source venv/bin/activate (venv) $ pip install -r requirements.txt
※pip install
の代わりにpip3 install
とする場合もあります。
※invalid command 'bdist_wheel'
というエラーが発生する場合はpip install wheel
もしくはpip3 install wheel
でうまくいく場合もあるみたいです。
giftlessの設定
$ vi giftless.conf.yaml $ cat giftless.conf.yaml # Giftless configuration AUTH_PROVIDERS: - giftless.auth.allow_anon:read_write
giftlessの起動
(venv) $ GIFTLESS_CONFIG_FILE=giftless.conf.yaml ./flask-develop.sh
※他のPCからアクセスしたい場合は-h
オプションでホストを指定する必要があります。
※ポート番号はデフォルトで5000番となっています。変更したい場合は-p
オプションを使います。
(venv) $ GIFTLESS_CONFIG_FILE=giftless.conf.yaml ./flask-develop.sh -h 0.0.0.0 -p 8080
giftlessの起動方法
インストール完了後は下記のコマンドを実行することでgitflessを起動できます。
$ cd giftless $ python3 -m venv venv $ source venv/bin/activate (venv) $ GIFTLESS_CONFIG_FILE=giftless.conf.yaml ./flask-develop.sh -h 0.0.0.0 -p 8080
Git LFSの使い方
giftlessの使い方としては特別なことはありませんが、簡単に紹介してみます。
リポジトリの複製
$ git clone [email protected]:yourname/example.git
$ cd example
Git LFSのインストール
$ git lfs install
Git LFSで管理したいファイルの設定
$ git lfs track file.zip $ git lfs track "*.bin" $ git lfs track "data/*"
Git LFSのURLを設定
$ git config -f .lfsconfig lfs.url "http://123.456.789.012:5000/yourname/example"
※/yourname/example
の部分は階層を増やしたり減らしたり好きなように設定にできるみたいです。
※git config --add lfs.url "http://123.456.789.012:5000/"
とすることもできますが、この場合、新しくgit clone
した時にGit LFSで管理しているファイルの取得でエラーが発生してしまいます。再度lfs.url
を設定した後にgit pull
してみてください。
作業した結果を反映
$ git add -A
$ git commit -m "コメント"
$ git push
Git LFSのアンインストール
$ git lfs uninstall
リンク
Implementations · git-lfs/git-lfs Wiki · GitHub
https://github.com/git-lfs/git-lfs/wiki/Implementations
GitHub – datopian/giftless
https://github.com/datopian/giftless
Git Large File Storage
https://git-lfs.github.com/