Для справки, я запускаю CentOS 5.5 на сервере.
Я работаю над распределенным проектом с несколькими другими разработчиками, и мы используем Git для управления нашими репозиториями. Все размещено в прямом эфире на Gitorious и работает прекрасно. Однако нам нужна ветка в нашем репозитории, чтобы синхронизироваться с внешним репозиторием Subversion - что-то вроде «ветки вендора» в Git. Причина в том, что мы строим несколько вещей на основе этого существующего проекта с открытым исходным кодом (WordPress) и хотим, чтобы наша рабочая копия наследовала все исправления, которые они публикуют в своем собственном репо.
У меня все настроено так, что у нас есть отдельная ветка под названием «wordpress», которую можно синхронизировать с живым репозиторием Subversion. Для этого все просто:
git checkout wordpress
git svn rebase
git gc
git push origin wordpress
Эти команды будут:
- Убедитесь, что мы находимся в ветке WordPress
- Повторная синхронизация ветки с живым репозиторием Svn
- Запустить сборку мусора (в противном случае хранилище постепенно становится неуправляемо большим)
- Вставьте обновленную ветку в наш размещенный репозиторий на Gitorious
Достаточно легко запускать эти четыре команды при каждом обновлении транка WordPress, но это раздражает и доставляет хлопоты. Я хотел бы настроить это как работу cron, но я не могу понять, как!
Я написал скрипт с именем wordpress.sh
и поместил его в папку /etc/
на сервере:
#!/bin/bash
cd /var/www/git/wordpress
git checkout wordpress
git svn rebase
git gc
git push origin wordpress
Скрипт работает просто отлично. Я могу подключиться по SSH к моему серверу, войти в систему как root и набрать . /etc/wordpress.sh
, и все работает просто отлично. Но как я могу настроить это так, чтобы cron что-то сделал для меня?
Я пытался вручную добавить его в crontab (безуспешно), используя интерфейс Webadmin в CentOS, чтобы добавить его как почасовой скрипт (безуспешно), и теперь я в растерянности! Мои системные журналы утверждают , что они запускаются (журнал ниже):
Feb 4 07:00:01 ---- crond[27745]: (root) CMD (/etc/wordpress.sh #WordPress mirror)
Feb 4 07:01:01 ---- crond[27773]: (root) CMD (run-parts /etc/cron.hourly)
Feb 4 08:00:01 ---- crond[29095]: (root) CMD (/etc/wordpress.sh #WordPress mirror)
Feb 4 08:01:01 ---- crond[29142]: (root) CMD (run-parts /etc/cron.hourly)
Feb 4 09:00:01 ---- crond[29708]: (root) CMD (/etc/wordpress.sh #WordPress mirror)
Feb 4 09:01:01 ---- crond[29718]: (root) CMD (run-parts /etc/cron.hourly)
Feb 4 10:00:01 ---- crond[30328]: (root) CMD (/etc/wordpress.sh #WordPress mirror)
Feb 4 10:01:01 ---- crond[30337]: (root) CMD (run-parts /etc/cron.hourly)
Но на самом деле ничего не произойдет, если я не войду в систему и не выполню скрипт вручную. Идеи?