2009-07-30 18 views
5

私は頻繁に、サーバーにsshing特定のディレクトリに切り替えて、実行しているのsvn更新のsvn更新

を自動化する私はこれを自動化するための非常に簡単な方法は、おそらくそこだと考えているので、私はシンプルな特定のAすることができます私がスクリプトを実行すると、SSH経由でログインし、正しいディレクトリにcdしてsvn-updateを実行します。

これはcapistranoの仕事ですか、それとも簡単なbashスクリプトで作業できますか?

+3

makeの仕事です。 ssh user @ remote 'cd/path/to/project && svn update' – LiraNuna

+0

ありがとう、私はこのスクリプトをちょっと切ったし、./update-devsiteを実行すると更新されます:) – Tom

答えて

5

cronの仕事のようですね。 crontabを実行し、そのようなエントリを追加します。

 
#min hour date month day command 
0 * * *  * ssh [email protected]host '(cd path/to/working/copy; svn update)' 

あなたはそれを要求しないようにssh passwordless authentication with ssh-agentを設定する必要があるかもしれません。 (以下のコメントあたり)

EDIT:あなたが無視でき

 
#min hour date month day command 
0 * * *  * (cd path/to/working/copy; svn update) 

が続いそうのようなエントリを追加

 
ssh [email protected] crontab -e 

を実行して、あなたがそうするための十分な権限を持っていると仮定すると、あなたのサーバーがあなたにcronの使用を許可していない限り、編集の上の部分です。

+0

なぜcron-jobターゲットマシンで実行しますか? – innaM

+0

それは非常に良い質問です...私は "svn update"を実行するのに十分な特権を持っていましたが、自分のcronジョブを作成するための十分な特権を持たない同様の状況にありました。 。しかし、あなたがそれを持ち出すようになった今、それは馬鹿な前提です...それは間違いなくサーバーコンピュータ上でcronジョブを実行する方が良いでしょう。 –

2

おそらく、このアクションを実行している理由を尋ねる必要がありますか?

CruiseControlやHudsonなどのビルドサーバは、(svnコミットがいつ実行されたかを知る)より一般的なケースを解決できますか?

特定のsvnサーバで監視する必要があり、管理アクセス権を持っている場合は、サーバへのコミット後のフックを有効にすることができます。たとえば、コミットごとに電子メールを送信できますコミットの種類)。

あなたの状況のユースケースを明確にすることができれば、それは役に立ちます。

0

単純なbashスクリプトで行います。/ etc/profileファイルにsvn updateコマンドを追加してください。

here for bash loginスクリプト処理を参照してください。

実行中のプロセスがある場合はsshが終了しないので、別のボックス(つまりログインしていない)から実行する場合は、すべてのリダイレクトをバックグラウンドで実行することをお勧めします/ dev/nullに設定します。

関連する問題