2011-02-04 11 views
3

参考までに、私はCentOS 5.5をサーバー上で実行しています。Git-Svnクローンをcronでどのように同期させるのですか?

私は他のいくつかの開発者と分散プロジェクトに取り組んでいます.Gitを使ってリポジトリを管理しています。すべてがGitoriousでライブでホストされ、美しく動作します。しかし、Gitの "ベンダーブランチ"のような外部のSubversionリポジトリとの同期を保つためには、リポジトリにブランチが必要です。理由は、この既存のオープンソースプロジェクト(WordPress)に基づいていくつかのことを構築しており、自分のリポジトリに公開しているバグ修正版を作業コピーに継承させたいからです。

ライブSubversionリポジトリと同期して保存できる「ワードプレス」という別のブランチがあるように設定しました。これらのコマンド

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

ます:そのためには、同じくらい簡単です

  1. は確かに私たちはWordPressのブランチ
  2. 再同期ライブのSVNリポジトリ
  3. とブランチにしているしてください
  4. ガベージコレクションを実行する(そうでなければ、リポジトリは徐々に管理不能に大きくなる)
  5. 更新されたブランチをGitoriousのホストされたリポジトリにプッシュする

WordPressのトランクのアップデート時にこれらの4つのコマンドを実行するのは簡単ですが、それは面倒で面倒です。私は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が私のために何かをするようにすることができますか?

CentOSのWebadminインターフェイスを使用して手動でcrontabに追加しようとしましたが失敗しました(失敗した場合)、今は迷っています!私のシステムログ、それは発射だと請求(以下ログ):

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) 

しかし、私がログインして、手動でスクリプトを実行しない限り、何も実際には起こりません。アイデア?

+0

また、コマンド 'を使って試しました。/etc/wordpress.sh'をcronジョブで実行しましたが、それは何もしませんでした。 – EAMann

+0

私が最終的に(y @ ygramのアドバイスに基づいて)解決策にどのようになったかについてのより長い議論に興味がある人は、私のブログのフォローアップ投稿をチェックしてください:http://eam.me/e1 – EAMann

答えて

2

Cronはログインシェル以外の環境で動作するため、gitがパスにない可能性があります。最も簡単なのは通常、crontab(/ usr/bin/gitまたはgitがインストールされている場所)のすべてのコマンドのフルパスを使用することです。

通常、cronで実行されるスクリプトのエラーはユーザーに郵送されるので、ルートのメールボックスを調べてみてください。

+0

エラーを投げていませんでしたが、 'git'への参照を'/usr/bin/git/git'に変更して動作させる必要がありました。また、 '/ etc/wordpress.sh'から' sh/etc/wordpress.sh'にcronコマンドを変更して動作させる必要がありました。助けてくれてありがとう! – EAMann

-1

サイトをrootとして実行していますか?手動でスクリプトをrootとして実行しますか?あなたがしないことを願っています。

これで、rootアカウントからスクリプトが実行され、おそらくリポジトリが見つかりません。それをあなたのアカウントのcrontabに追加してください。rootではありません。

+0

これを書いたとき、私がシステムのために持っていた唯一のアカウントは 'root'でした。私が 'root 'として実行しないように伝えるのは一般的には良い考えですが、問題を解決するのに役立つものではありません。 – EAMann

関連する問題