使用 hg、git 和 svn 的每日 crontab

使用 hg、git 和 svn 的每日 crontab

您好,我编写了一个脚本,用于从 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

如果您向我们展示您的 crontab 命令,将会很有帮助。

首先指出几点。

编写 cron 作业时使用完整路径:例如。

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

还可以将输出传输到日志文件,以方便您查看。stdout 和 stderr。例如。

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 密码

相关内容