cron - 如何通过 cron 同步 Git-Svn 克隆?

标签 cron git-svn centos

For reference, I'm running CentOS 5.5 on the server.

我正在与其他几位开发人员一起开发一个分布式项目,我们使用 Git 来管理我们的存储库。一切都在 Gitorious 上实时托管并且运行良好。但是,我们的存储库中需要一个分支来与外部 Subversion 存储库保持同步——有点像 Git 中的“供应商分支”。原因是:我们正在基于这个现有的开源项目 (WordPress) 构建一些东西,并希望我们的工作副本继承他们在自己的 repo 中发布的任何错误修复。

我已经设置好了,这样我们就有了一个名为“wordpress”的独立分支,它可以与实时 Subversion 存储库保持同步。要做到这一点,很简单:

git checkout wordpress
git svn rebase
git gc
git push origin wordpress

这些命令将:

  1. 确保我们在 WordPress 分支上
  2. 将分支与实时 Svn 存储库重新同步
  3. 运行垃圾收集(否则存储库会逐渐变得难以管理)
  4. 将更新的分支推送到我们在 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(未成功),使用CentOS中的Webadmin界面将其添加为每小时脚本(未成功),现在我不知所措!我的系统记录声明它正在触发(记录如下):

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)

但是除非我登录并手动运行脚本,否则什么都不会发生。想法?

最佳答案

Cron 在登录 shell 之外的另一个环境中运行,因此可能的错误是 git 不在路径中。最简单的通常是使用 crontab 中每个命令的完整路径(/usr/bin/git 或安装 git 的任何地方)。

cron 运行的脚本中的错误通常会邮寄给用户,因此请尝试查看 root 的邮箱。

关于cron - 如何通过 cron 同步 Git-Svn 克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899827/

相关文章:

Git svn 克隆 : How to defer fetch of revision history

nginx - 无法从外部访问 nginx 服务器

php - CSV php,使用浏览器变量保存为数字,cron 作为字符串

java - Cron 调度程序 "disable pattern"

php - 通过 cron 执行 PHP - 未指定输入文件

git - 无法 Git 推送从共享 Windows 存储库(本地网络)挂载文件夹

php - 通过 Cronjob 在 Silverstripe 中执行一个函数

git - 如何在一个工作目录中使用两个 SVN 项目和相应的 git-svn 分支?

python - 在 centos 6.7 上安装 booktype

linux - 为什么 "echo [#10]"等于 1?