4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuのSlug Sizeを減らす方法

Last updated at Posted at 2019-08-25

概要

HerokuのSlug Size長く使ってると増えてきますよね。。
そこでGitの掃除をして、Slug Sizeを減らす方法を調べました。
私はこの方法で500MB→200MBに削減成功しました。

注意
コミットされた大きなファイルのコミット履歴を消す操作をするため、コミット履歴が大幅に書き換わります。なのでチーム開発をしている場合、作業した人以外は全員git cloneし直してください。

手順

Gitの掃除

  • 現状のRepo全体をフォルダごとコピーしてバックアップする
  • まず全てのブランチをmasterにマージする
  • このコマンドで重いファイルを確認
git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| sed -n 's/^blob //p' \
| awk '$2 >= 2^20' \
| sort --numeric-sort --key=2 \
| cut -c 1-12,41- \
| $(command -v gnumfmt || echo gnumfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
  • du -sh .git/objectsで現状の容量を確認
  • git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch path/to/heavy/file you/can/set/multiple/files" --prune-empty -- --all
  • そのあとこれらを実行
$ rm -rf .git/refs/original/
$ git reflog expire --expire=now --all
$ git gc --aggressive --prune=now
  • du -sh .git/objectsで容量が減っていることを確認
  • その後、stagingや各種必要なブランチを作成し、GitHubにforce pushする
  • 共同作業者がいる場合、cloneし直してもらう

Herokuの容量削減

  • heroku plugins:install heroku-repo
  • heroku repo:reset -a appnameでHerokuのrepoをリセットする
  • heroku repo:gc -a appnameheroku repo:purge_cache -a appnameもする(参考: https://github.com/heroku/heroku-repo)
  • GitHub deploy integrationなどを設定している場合は一度解除し、ターミナルから直接force pushする
  • ここでHerokuのSettingsのSlug Sizeを確認する。減っていなければreset, gc, purge_cacheをもう一度する
  • その後GitHub deploy integrationを再設定

参考

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?