15

我在 Linux 上运行 SVN。我希望在提交后运行自动部署。根据我的搜索,看起来 svn post-commit 可以解决问题。但是我在我的 SVN 安装中找不到 SVN post-commit。所以我想知道它是否是一个单独的安装?我可以下载和安装任何 SVN 提交后挂钩吗?

4

2 回答 2

22

首先,您可能不想在提交后执行此操作。原因是您不想在挂钩中做任何需要太长时间才能完成的事情,因为用户必须等待挂钩完成才能继续。

要回答您的问题,请查看服务器上的存储库目录,您应该会看到以下目录和文件:

  • 自述文件.txt
  • 会议
  • D b
  • 格式
  • 挂钩

其中一个目录称为hooks. 看看这个目录:

  • 提交后.tmpl
  • 锁后.tmpl
  • post-revprop-change.tmpl
  • 解锁后.tmpl
  • 预提交.tmpl
  • 预锁.tmpl
  • pre-revprop-change.tmpl
  • 预解锁.tmpl
  • 开始提交.tmpl

这些是各种钩子的模板。您会看到这些都是简单的 BASH/Korn/Bourne shell 脚本。您将使用该svnlook命令来获取有关您的用户刚刚提交的修订或事务(如果是预提交挂钩)的信息。

您要做的是运行命令svnlook changed以查看更改的内容,然后根据此信息,您必须获取文件并部署它。这意味着您必须创建一个工作目录并进行结帐。想象一个开发人员进行签入,然后等待您的提交后挂钩进行签出和部署。

你最好做的是让Jenkins之类的东西来完成你的提交后任务。Jenkins 通常是一个持续构建服务器。每当有人提交时,Jenkins 都会对该项目进行检查并进行构建。它可以运行各种测试,如果有任何问题,然后通过电子邮件发送给开发人员。

但是,如果您真的没有要构建的东西,它也可以简单地进行检查和部署。Jenkins 使用 Java 1.6 运行,但除此之外,它非常易于安装和使用。这都是菜单驱动的,您不需要知道如何创建 XML 文件或编写任何程序来使用它。

所以,看看 Jenkins,看看如何从那里进行部署。这样,您的开发人员可以在 Jenkins 处理部署时继续他们的工作。而且,如果部署出现问题,您可以让 Jenkins 发送电子邮件、即时消息、推文,甚至将交通信号灯从绿色更改为红色。

于 2011-09-28T02:48:30.257 回答
17

这不是单独的安装。在您的存储库目录中,有一个“挂钩”目录。您可以找到 post-commit.tmpl,只需根据您的操作系统类型修改文件并将其重命名为可执行文件即可。

于 2011-09-28T01:00:39.387 回答