自动化svn更新

时间:2009-07-30 08:18:10

标签: svn bash automation ssh capistrano

我经常搜索服务器,切换到特定目录并运行svn-update

我认为可能有一种非常简单的自动化方法,因此我可以在运行脚本时简单地指定一个子目录,它将通过SSH登录,cd到正确的目录并运行svn-update。 / p>

这是capistrano的工作还是一个简单的bash脚本可以完成这项工作?

3 个答案:

答案 0 :(得分:5)

听起来像cron的工作。执行crontab,并添加如下条目:

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

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

编辑(以下评论):

假设您有足够的权限,请运行

ssh user@host crontab -e

然后添加如下条目:

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

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

答案 1 :(得分:2)

也许您应该问问自己为什么要执行此操作?

诸如CruiseControl或Hudson之类的构建服务器是否可以解决更一般的情况(知道何时执行了svn提交)?

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

如果您能澄清您的情况的用例,那将会有所帮助。

答案 2 :(得分:0)

简单的bash脚本会这样做,将svn update命令添加到/ etc / profile文件中。

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

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