1

Здравствуйте, я сделал скрипт, который обновляет некоторые репозитории из git merc и svn, затем обновляет git репо. Скрипт работает вручную, но не работает в crontab, вот скрипт:

#!/bin/bash
cd /var/gitrepo/addons/addonskins && /usr/bin/git pull
cd /var/gitrepo/addons/aurora && /usr/bin/git pull
cd /var/gitrepo/addons/bartender && /usr/bin/git pull
cd /var/gitrepo/addons/dbm && /usr/bin/git pull
cd /var/gitrepo/addons/elvui && /usr/bin/git pull
cd /var/gitrepo/addons/elvui_enhanced && /usr/bin/git pull
cd /var/gitrepo/addons/icehud && /usr/bin/git pull
cd /var/gitrepo/addons/kuinameplates && /usr//bin/git pull
cd /var/gitrepo/addons/xct+ && /usr/bin/git pull
cd /var/gitrepo/addons/kuinameplates && /usr/bin/git pull
cd /var/gitrepo/addons/postal && /usr/bin/svn update
cd /var/gitrepo/addons/recount && /usr/bin/svn update
cd /var/gitrepo/addons/rsa && /usr/bin/svn update
cd /var/gitrepo/addons/skada && /usr/bin/svn update
cd /var/gitrepo/addons/prat && /usr/bin/hg pull
cd /var/gitrepo/addons/askmrrobot && /usr/bin/hg pull
cd /var/gitrepo/addons/prat && /usr/bin/hg pull
cd /var/gitrepo/addons && /usr/bin/git add .
cd /var/gitrepo/addons && /usr/bin/git commit -m 'Automatic update'
cd /var/gitrepo/addons && /usr/bin/git push
cd /var/gitrepo/addons && touch done.txt

Он создает файл done.txt, но, похоже, по крайней мере не запускает обновления svn

1 ответ1

3

Было бы полезно, если бы вы показали нам свою команду crontab.

Сначала несколько указателей.

Используйте полные пути при написании заданий cron: например.

03 05 * * * /bin/bash /home/user/myScript.sh

Также направьте вывод в файл журнала для вашего удовольствия от просмотра. И стандартный вывод, и стандартный вывод. например.

03 05 * * * /bin/bash /home/user/myScript.sh > ~/log/myScript.log 2>&1

Посмотрите, выполнялось ли задание Cron вообще в системном журнале

grep CRON /var/log/syslog

Это будет полезно при отладке. Теперь на вас вопрос относительно GIT и SVN

Чтобы заставить SVN работать, я использовал это полезное руководство (захват здесь для справки):

First, install the keychain program. Second, add this to your ~/.bash_profile (we don't need this to run for every terminal, just on login):

# Use keychain to keep ssh-agent information available in a file
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/${HOSTNAME}-sh
Tweak as needed for the location of your private SSH keys. Also, make sure your .bash_profile is actually invoked at start-up. When logging into Ubuntu graphically, this may not be the case unless it's sourced in .profile.

Third, add this to the cron job script (if your cron job is a Python program, just wrap it in a shell script):

source $HOME/.keychain/${HOSTNAME}-sh

Что касается SVN, я не смог заставить его работать сам. Наткнулся на ваш пост, когда я искал то же самое. Обновлю мой ответ, если найду что-нибудь. Обновление: вы можете использовать файлы конфигурации в ~/.subversion для хранения вашего пароля SVN

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