我经常ssh方式连接到服务器,切换到一个特定的目录和执行svn更新自动化SVN更新
我在想,有可能实现自动化这是一个非常简单的方法,让我可以简单特定的一个当我运行该脚本时,它将通过SSH登录,cd到正确的目录并运行svn-update。
这是卡皮斯特拉诺的工作还是简单的bash脚本可以完成这项工作?
我经常ssh方式连接到服务器,切换到一个特定的目录和执行svn更新自动化SVN更新
我在想,有可能实现自动化这是一个非常简单的方法,让我可以简单特定的一个当我运行该脚本时,它将通过SSH登录,cd到正确的目录并运行svn-update。
这是卡皮斯特拉诺的工作还是简单的bash脚本可以完成这项工作?
听起来像是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。
也许你应该问自己为什么你正在执行此操作?
构建服务器(如CruiseControl或Hudson)能否解决更一般的情况(了解何时执行svn提交)?
如果您需要在特定的svn服务器上进行监控,并且您具有管理访问权限,则可以启用服务器的提交后挂接,例如向每个提交发送一封电子邮件(或者只发送给某个特定提交类型)。
这将有助于,如果你能澄清你的情况的用例。
简单的bash脚本就可以做到,将svn update命令添加到你的/ etc/profile文件中。
请参阅here for bash login脚本处理。
如果你想从一个不同的盒子(即不登录)运行它,只要记住,如果有一个正在运行的进程,ssh将不会退出,所以你可能想在后台运行更新,并且全部重定向到/ dev/null。
这是一个制作工作。 ssh user @ remote'cd/path/to/project && svn update' – LiraNuna 2009-07-30 08:21:49
谢谢,我把这个脚本弄了一下,它会在我运行./update-devsite时更新:) – Tom 2009-07-30 08:54:08