GitHubに100MB以上のファイルをプッシュする

まずやりたかったこと

何で100MB以上のファイルをプッシュする事になったのか……それについてもソース管理のテクニック(?)として記録しておきたいので、そこから説明しようと思います。

GitHubを使っていたある日、いたずらに増えていく自分のレポジトリを見て近い将来もう一度自分の書いたソースを参考にしたくなった時に、目的のリポジトリに辿り着くことが困難になるのではないかという危機感を覚えました。

そしてDockerfilesレポジトリを作ってしまい、そこにDockerfilesだけをプッシュしていけば乱雑にレポジトリが増えてしまうのを防ぐことが出来ると思いました。

他にも拡張機能などバージョンアップされたソースを、同じレポジトリの中で管理し、それをwgetなどで取得させる手法などは他所でもよく見受けられます。最初はそれがやりたかったのです。

そして課題が生まれた

つまり自分はこんな風に管理したかった。

Dockerfiles/
|-- apache_mysql ← Dockerコマンドで起動出来るファイル群
|-- apache_mysql.tar.gz
|-- julius
|-- julius.tar.gz
|-- node_express
`-- node_express.tar.gz

これは単なる例ですが上みたいに色々なDockerfile等でコード化された環境のtarボール群を一つのレポジトリで管理し、それらをcloneで全て引っ張ることなくwgetでダウンロード出来れば楽になるのではないかと考えたのです。

しかしGitHubには100MBを越えるファイルをプッシュ出来ないという制限があり、自分はある時点からtarボールをプッシュ出来なくなりました。

この課題を解決するにはLFSというサービスを使えばいいです。今回の記事はこの設定方法と実際にプッシュしたtarボールをwgetでダウンロードするまでの備忘録です。

ようやく手順の説明

環境はCentOS7を想定。

# インストール
# yum -y update
# yum -y install git
# yum -y install epel-release
# yum -y install git-lfs

# 確認
# git version
git version 1.8.3.1
# git-lfs version
git-lfs/2.4.2 (GitHub; linux amd64; go 1.9.4)

まずはgit initとかgit remote add origin URLとかgit configとかで初期設定を行う。
バージョン違いの互換性については知りません。ググって下さい。
GitHubとかのレポジトリとかも適当に作っておいて下さい。
※後でwgetする際は当然パブリックに設定する。

次はlfsの設定をしていく。
といっても手順は少ないです。

# lfs管理対象ファイルを指定する
# git-lfs track "*.tar.gz"
Tracking "*.tar.gz"
# git-lfs track
Listing tracked patterns
    *.tar.gz (.gitattributes)

これで設定完了。
実際にpushまでして、別のディレクトリに移動してwgetしてみる。

# git add filename.tar.gz ←100MB以上のファイル
# git commit -m "tarballをコミット" -m "ちなみにリポジトリの上限は100GB" -m "1GBを越えるとメールが来る"
# git push origin master
# Errorが出ていなければ成功。

# 適当な場所に移動する
# tarball形式のファイルをダウンロードする際はURLに注意する。
# wget https://github.com/ユーザ名/レポジトリ名/tarball/ブランチ名/ファイル名

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA