2

Скучный фон - Резюме: я знаю, что мы не используем GIT должным образом! ,
Это началось с небольшого хобби-проекта и быстро развивалось - моя компания использует Git для отслеживания и управления изменениями на заказ веб-платформы программного обеспечения и выступает в качестве центрального хранилища. Приблизительно 300 мобильных устройств затем подключаются к локальному клонированному репозиторию при запуске с сервера внутренней интрасети, чтобы они могли получать доступ к последней версии программного обеспечения, когда он не подключен к сети (мы используем ветви, чтобы они подвергаются воздействию только зрелого / проверенного кода).

Теперь мы пошли на шаг - у нас есть база данных "частей", которая обновляется ежедневно. Я создал отдельную версию этой базы данных, используя скрипты cron для создания автономной версии, которую можно открыть на локальной "неподключенной машине".

Моя проблема
У меня есть набор сценариев PHP, которые берут данные таблицы базы данных и экспортируют их в формат плоского файла, требуемый приложением, и копируют любые дополнительные изображения с момента последнего цикла в правильные места. Все файлы хранятся в /var/www/clonedrepository

Затем я хочу выполнить следующие команды в каталоге:

git add .
git commit -m "Automatic update: todaysdate"
git push

Репозиторий клонируется из /home/git/repository который обслуживается с помощью символической ссылки git deamon и apache, обеспечивающей доступ по http (для клонирования немых устройств) и SSH (для редактирования / обновления взрослыми).

Проблема в том, что я веб-программист, и я не в себе. Я настроил git-репозитории, и мне удобно работать с командной строкой, но я не знаю, с чего начать.

Примечание: никогда не будет конфликтов, поскольку ни один пользователь не будет редактировать файлы данных, а система не будет редактировать ничего, кроме файлов данных.

Итак, подведем итог : у меня есть центральный репозиторий на моем компьютере с Ubuntu Linux (/home/git/repository), который я хотел бы обновлять ежедневно из клонированного репозитория (/var/www/clonedrepository) на том же компьютере.

1 ответ1

2

Хорошо, так что я решил это сам ...

1) Я установил скрипт, который содержит следующие строки:

cd /var/www/partsdb/ >> /home/git/push.log
git pull >> /home/git/push.log
git add . >>/home/git/push.log
git commit -a -m "Scheduled Commit: `date`" >>/home/git/push.log
git push >> /home/git/push.log
echo "Push Backup Successful `date`" >> /home/git/push.log

Этот скрипт перемещается в рабочий репозиторий, извлекает любые изменения из центрального репозитория (помните, что эти изменения будут влиять только на программные файлы, а не на файлы данных), добавляет любые измененные файлы данных (для ясности хранящиеся в подкаталоге /data ) фиксирует изменения (включая автоматическое сообщение на основе даты для отслеживания изменений / обвинений), а затем отправляет обратно в хранилище.

РЕДАКТИРОВАТЬ: С тех пор я добавил флаг -a в команду commit, которая затем удалит все файлы, удаленные сценариями автоматического обновления (add . все новые файлы). [/РЕДАКТИРОВАТЬ]

2) Я вызываю этот скрипт из crontab, выполняя скрипт от имени пользователя root (поскольку root - это только пользователь, у которого есть права на запись как в домашнюю папку git, так и в папку /var /www) с помощью команды:

0 * * * * root /home/git/gitpush.sh

Это запускает сценарий ежечасно - в то время как изолированные мобильные устройства будут извлекать данные из базы данных только при запуске (ежедневно / ежедневно), пользователи локальной сети всегда будут иметь самую последнюю версию (которая была передана в основную ветку).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .