我经常 ssh 进入服务器,切换到特定目录并运行 svn-update
我在想可能有一种非常简单的方法可以自动执行此操作,因此我可以在运行脚本时简单地指定一个子目录,它将通过 SSH 登录,cd 到正确的目录并运行 svn-update。
这是 capistrano 的工作还是一个简单的 bash 脚本可以完成这项工作?
我经常 ssh 进入服务器,切换到特定目录并运行 svn-update
我在想可能有一种非常简单的方法可以自动执行此操作,因此我可以在运行脚本时简单地指定一个子目录,它将通过 SSH 登录,cd 到正确的目录并运行 svn-update。
这是 capistrano 的工作还是一个简单的 bash 脚本可以完成这项工作?
听起来像是cron的工作。执行crontab,并添加如下条目:
#min 小时 日期 月 日 命令 0 * * * * ssh user@host '(cd path/to/working/copy; svn update)'
您可能需要使用 ssh-agent 设置ssh 无密码身份验证,以便它不会提示。
编辑(根据下面的评论):
假设您有足够的权限执行此操作,请运行
ssh user@host crontab -e
然后像这样添加一个条目:
#min 小时 日期 月 日 命令 0 * * * * (cd 路径/到/工作/复制;svn 更新)
您可以忽略编辑上方的部分,除非您的服务器不允许您使用 cron。
也许您应该问自己为什么要执行此操作?
像 CruiseControl 或 Hudson 这样的构建服务器能否解决更一般的情况(知道何时执行了 svn 提交)?
如果您需要在特定的 svn 服务器上进行监控,并且您对它具有管理权限,则可以启用服务器的提交后挂钩,例如在每次提交时(或仅在某些特定类型的提交时)向您发送电子邮件.
如果您能澄清您的情况的用例,这将有所帮助。
简单的 bash 脚本就可以了,将 svn update 命令添加到您的 /etc/profile 文件中。
有关bash 登录脚本处理的信息,请参见此处。
如果你想从不同的盒子运行它(即不登录),只要记住如果有一个正在运行的进程,ssh 就不会退出,所以你可能想在后台运行更新,全部重定向到 /dev/空值。