2009-07-30 14 views
5

sto spesso sshing in un server, il passaggio a una directory specifica e l'esecuzione di svn-updateAutomatizzare svn update

sto pensando che probabilmente c'è un modo molto semplice per automatizzare questo, così posso semplice specifica un sottodirectory quando eseguo lo script e accederà tramite SSH, cd alla directory di destra ed esegui svn-update.

È un lavoro per capistrano o un semplice script bash può fare il lavoro?

+3

È un lavoro da fare. ssh user @ remote 'cd/path/to/project && svn update' – LiraNuna

+0

Grazie, ho modificato questo script un po 'e verrà aggiornato quando corro ./update-devsite :) – Tom

risposta

5

Sembra un lavoro per cron. Esegui crontab, e aggiungere una voce in questo modo:

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

Potrebbe essere necessario configurare ssh passwordless authentication with ssh-agent in modo che non verrà richiesto.

EDIT (per commenti qui sotto):

Supponendo di avere privilegi sufficienti per farlo, eseguire

 
ssh [email protected] crontab -e 

Quindi aggiungere una voce in questo modo:

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

si può ignorare il parte sopra la modifica, a meno che il tuo server non ti permetta di usare cron.

+0

Perché non avere il cron-job correre sulla macchina di destinazione? – innaM

+0

Questa è una domanda molto buona ... Ero in una situazione simile in cui avevo privilegi sufficienti sul server per eseguire "svn update", ma i privilegi insufficienti per creare i miei propri lavori cron, e semplicemente supponevo che Tom fosse in un simile sitution . Comunque, ora che lo fai apparire, è un'ipotesi stupida da fare ... sarebbe sicuramente meglio eseguire il cron job sul computer server. –

2

Forse dovresti chiederti perché stai eseguendo questa azione?

Un server di build come CruiseControl o Hudson può risolvere il caso più generale (di sapere quando è stato eseguito un commit svn)?

Se è necessario il monitoraggio su un server svn specifico e si dispone dell'accesso di gestione ad esso, è possibile abilitare un hook post-commit sul server, ad esempio per inviare una e-mail su ogni commit (o solo su alcuni specifici tipi di commit).

Sarebbe utile, se potessi chiarire il caso della tua situazione.

0

semplice script bash lo farà, aggiungere il comando svn update al file/etc/profile.

Vedere l'elaborazione dello script here for bash login.

Se si desidera eseguirlo da una casella diversa (ovvero non accedere) ricorda solo che ssh non uscirà se c'è un processo in esecuzione, quindi potresti voler eseguire l'aggiornamento in background, con tutti i reindirizzati fuori a/dev/null.

Problemi correlati