5

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

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

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

4

3 回答 3

5

听起来像是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。

于 2009-07-30T08:36:30.350 回答
2

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

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

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

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

于 2009-07-30T08:24:51.763 回答
0

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

有关bash 登录脚本处理的信息,请参见此处。

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

于 2009-07-30T08:35:43.207 回答