2009-07-30 79 views
5

我经常ssh方式连接到服务器,切换到一个特定的目录和执行svn更新自动化SVN更新

我在想,有可能实现自动化这是一个非常简单的方法,让我可以简单特定的一个当我运行该脚本时,它将通过SSH登录,cd到正确的目录并运行svn-update。

这是卡皮斯特拉诺的工作还是简单的bash脚本可以完成这项工作?

+3

这是一个制作工作。 ssh user @ remote'cd/path/to/project && svn update' – LiraNuna 2009-07-30 08:21:49

+0

谢谢,我把这个脚本弄了一下,它会在我运行./update-devsite时更新:) – Tom 2009-07-30 08:54:08

回答

5

听起来像是cron的工作。执行crontab,并添加一个条目,像这样:

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

您可能需要设置ssh passwordless authentication with ssh-agent,使其不会提示。

编辑(每下面的注释):

假设你有足够的权限来做到这一点,运行

 
ssh [email protected] crontab -e 

然后添加像这样的条目:

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

可以忽略部分位于编辑之上,除非您的服务器不允许您使用cron。

2

也许你应该问自己为什么你正在执行此操作?

构建服务器(如CruiseControl或Hudson)能否解决更一般的情况(了解何时执行svn提交)?

如果您需要在特定的svn服务器上进行监控,并且您具有管理访问权限,则可以启用服务器的提交后挂接,例如向每个提交发送一封电子邮件(或者只发送给某个特定提交类型)。

这将有助于,如果你能澄清你的情况的用例。

0

简单的bash脚本就可以做到,将svn update命令添加到你的/ etc/profile文件中。

请参阅here for bash login脚本处理。

如果你想从一个不同的盒子(即不登录)运行它,只要记住,如果有一个正在运行的进程,ssh将不会退出,所以你可能想在后台运行更新,并且全部重定向到/ dev/null。