Вы действительно не хотите этим заниматься.Если у вас есть файлы, которые меняются, они должны храниться на S3, в базе данных или другом внешнем хранилище.
У династий Heroku есть эфемерные файловые системы, и heroku перезагружает ваши динамы не реже одного раза в 24 часа.Любые изменения в локальной файловой системе теряются при перезагрузке.
Это означает, что если вы измените файл, и heroku перезагрузится, прежде чем отправить этот файл в github, вы потеряете изменения.
Это также означает, что вам нужно будет повторно развертывать каждый раз, когда вы отправляетесь в репозиторий github.Поэтому, если вы часто нажимаете, вы будете постоянно повторно развертывать.
Теоретически, вот один из способов.
- Установите heroku-apt-buildpack .
- Настройте его для установки git.
- Создайте пару ключей SSH.Поместите закрытый ключ в конфиг var вашего приложения heroku.Установите открытый ключ на github, чтобы ваш dyno мог перейти на github.
- Сконфигурируйте задание cron для извлечения из git, внесения изменений в локальную файловую систему и push для git после внесения любых изменений локальной файловой системы, используя приватныйключ ssh из конфига var.
- Если вы хотите, чтобы "последний толчок выиграл", семантика принудительный толчок.В противном случае вам нужно разобраться со случаем, когда push не удается «тянуть, возможно, разрешать конфликты, толкать»
- Настроить heroku для автоматического развертывания из github при каждом нажатии на ветку master.
Но на самом деле - не делай этого.Поместите свои файлы в какую-нибудь внешнюю службу хранения.