У меня есть веб-сайт, работающий на облачном сервере. Могу ли я связать соответствующие файлы с моим репозиторием github. Итак, всякий раз, когда я делаю какие-либо изменения на своем веб-сайте, он автоматически обновляется в моем репозитории github?
да. Я хочу, чтобы мой github автоматически обновлялся без каких-либо действий пользователя для фиксации изменений.
Как я могу использовать rsync? Есть ли альтернативный инструмент, предоставляемый GitHub?
Предполагая, что на вашем облачном сервере работает ОС, поддерживающая сценарий bash, добавьте этот файл в свой репозиторий.
Допустим, ваши файлы находятся в /home/username/server
, и мы назовем файл ниже /home/username/server/AUTOUPDATE
.
#!/usr/bin/env bash
cd $(dirname ${BASH_SOURCE[0]})
if [[ -n $(git status -s) ]]; then
echo "Changes found. Pushing changes..."
git add -A && git commit -m 'update' && git push
else
echo "No changes found. Skip pushing."
fi
Затем добавьте запланированную задачу, например crontab, чтобы запускать этот скрипт так часто, как вы хотите, чтобы ваш github обновлялся. Сначала он проверит, есть ли какие-либо изменения, и только зафиксирует и отправит все изменения, если есть какие-либо изменения.
Это будет запускать каждый скрипт каждую секунду.
*/60 * * * * /home/username/server/AUTOUPDATE
Не забудьте дать этому файлу разрешение на выполнение с помощью chmod +x /home/username/server/AUTOUPDATE
Это всегда будет отправлять изменения с сообщением фиксации «Обновить».
Спасибо!! Я предполагаю, что в упомянутом вами решении будет несколько коммитов, даже если я изменю одно слово.
@KillMe Это верно. Вот почему я рекомендовал что-то еще, например rsync, не использующее git. Git просто не работает так, как вы хотите.
Итак, что было бы более эффективным решением? Как работает rsync? Как он узнает, когда начать коммит или обновить мой репозиторий github?
@KillMe Я предполагаю, что вы хотите, чтобы коды на сервере были скопированы в другое место, чтобы они были доступны без доступа к серверу. К сожалению, это не будет работать с github. Вам нужен собственный сервер или найдите какой-нибудь другой сервис, поддерживающий rsync, который работает аналогично чему-то вроде Dropbox. Что-то подобное тоже работает, но это не тема этого вопроса.
Есть ли модуль/пакет для Node.js для достижения цели такого автообновления?
Вы говорите, что хотите, чтобы github обновлялся, когда вы вносите изменения в свой веб-сайт на своем облачном сервере? Вместо этого используйте rsync или что-то подобное, не требующее ввода пользователем данных для фиксации изменений.