Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过cron同步Git Svn克隆?_Cron_Git Svn_Centos - Fatal编程技术网

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

如何通过cron同步Git Svn克隆?,cron,git-svn,centos,Cron,Git Svn,Centos,作为参考,我在服务器上运行CentOS 5.5 我正在和其他几个开发人员一起进行一个分布式项目,我们正在使用Git来管理我们的存储库。一切都在Gitorious上直播,工作得很好。然而,我们需要存储库中的一个分支来与外部Subversion repo保持同步—有点像Git中的“供应商分支”。原因是:我们正在基于现有的开源项目(WordPress)构建一些东西,并希望我们的工作副本继承他们在自己的repo中发布的任何错误修复 我已经把事情安排好了,这样我们就有了一个单独的分支,叫做“wordpre

作为参考,我在服务器上运行CentOS 5.5

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

我已经把事情安排好了,这样我们就有了一个单独的分支,叫做“wordpress”,它可以与live Subversion repo保持同步。要做到这一点,很简单:

git checkout wordpress
git svn rebase
git gc
git push origin wordpress
这些命令将:

  • 确保我们在WordPress分支上
  • 将分支与实时Svn回购重新同步
  • 运行垃圾收集(否则存储库将逐渐变得难以管理)
  • 将更新的分支推送到Gitorious上的托管存储库
  • 每当WordPress trunk更新时,运行这四个命令很容易,但这很烦人,也很麻烦。我很想将此设置为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界面将其作为每小时脚本添加(未成功),现在我不知所措!我的系统日志声称它正在启动(以下日志):


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

    您是否以
    root用户身份运行站点?您是否以root用户身份手动运行脚本?我希望你不要


    现在看看cron输出:它从根帐户运行脚本,可能无法找到存储库。将它添加到帐户的crontab,而不是root。Cron在登录shell以外的其他环境中运行,因此可能的错误是git不在路径中。最简单的方法通常是在crontab(/usr/bin/git或安装git的任何地方)中使用每个命令的完整路径


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

    我也尝试使用命令
    /在cron作业中使用etc/wordpress.sh
    ,但这没有任何不同。它没有抛出任何错误。。。但我需要将对
    git
    的引用更改为
    /usr/bin/git/git
    ,以使其正常工作。我还必须将cron命令从
    /etc/wordpress.sh
    更改为
    sh/etc/wordpress.sh
    ,以使事情正常进行。谢谢你的帮助!当我写这篇文章时,我对系统的唯一帐户是
    root
    。告诉我不要以
    root
    身份运行通常是个好主意,但这根本无助于解决问题。
    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)