应用场景:
开发团队3-5人,用svn做版本控制,测试环境和数据库在测试服务器上,一般情况下先在本地测试完成,然后传到服务器测试,这样显得有点麻烦,集中规定将代码上传到服务器进行测试,这里就涉及到一个应用自动部署的问题,有两种思路,一种服务器写一个crontab,编写一个shell脚本,实时监听服务器,将最新版本检出到web根目录;第二种思路,利用svn的钩子实现版本的实时导出。第一种方法比较简单,直接写一个导出版本的shell脚本即可,第二种方法其实使用起来更加便利。
首先简单介绍一下svn hooks,通常在创建svn版本库之后我们会在版本库的文件目录下找到一个叫做hooks的目录,这里存放的就是svn所谓的钩子了,他的主要用途在于在subversion执行一个操作时,会触发相应的钩子程序(前提当然是钩子存在),钩子程序就是一些shell脚本,执行相应的操作。
如下图,列出的是一些钩子的模板案例,将后面的tmpl后缀名去掉,就变成了相应的钩子程序了。
post-commit
在提交完成,成功创建版本之后执行该钩子,提交已经完成,不可更改,因此本脚本的返回值被忽略。
post-lock
对文件进行加锁操作之后执行该脚本
post-revprop-change
在修改 revision 属性之后,执行该脚本。因为修改稿已经完成,不可更改,因此本脚本的返回值被忽略(不过实际上的实现似乎是该脚本的正确执行与否影响属性修改)
post-unlock
对文件进行解锁操作之后执行该脚本
pre-commit
在 Subversion transaction 完毕之后,在提交之前,执行该脚本
pre-lock
对文件进行加锁操作之前执行该脚本
pre-revprop-change
在修改 revision 属性之前,执行该脚本
pre-unlock
对文件进行解锁操作之前执行该脚本
start-commit
在客户端还没有向服务器提交数据之前,即还没有建立 Subversion transaction(缩写为 txn) 之前,执行执行该脚本
具体到我们的应用场景,我们要实现一个同步的测试服务器,我们只需要在一个用户执行完毕一个commit提交操作之后,让钩子程序去自动更新测试服务器的文件即可
。通过这个思路,我们需要作的就是建立一个post-commit的钩子。
- #!/bin/sh
- cd /usr/local/www/coolphp
- SVN=/usr/local/bin/svn
- export LANG=en_US.UTF-8
- $SVN update --username kokko --password 111111 --no-auth-cache
注意相关权限的设置…
原文:http://www.kokkowon.com/archives/987
分享到:
相关推荐
【标题解析】:“svn本地自动部署与远程部署web应用代码方案”这个标题表明了我们要讨论的是如何使用Subversion(简称svn)版本控制系统来实现web应用的自动部署,无论是本地还是远程环境。这通常涉及到版本控制策略...
再把开发的工具和解压的全量更新文件以及导出的SVN更新日志放在同级目录,利用插件把SVN更新日志的增量更新文件提取生成同部署一致的目录结构更新文件。为提高增量更新的效率和减少文件更新错误提供了很大的帮助。
- 在SVN钩子中集成JRebel,可以在每次更新或提交后自动重新加载修改过的类,从而实现“热部署”。 #### 常见问题及解决方案 **1. WEB-INF、META-INF 文件未生效** - 如果发现某些文件夹如`WEB-INF`或`META-INF`中...
在windows环境下,提交代码到svn中,使用钩子脚本,获取项目名称,提交人,提交时间,提交的日志信息,版本号,纯bat脚本。ps:不是pre-commit.bat文件,因为在该文件中获取不到真正的版本号。
这些步骤涵盖了从获取源代码、配置项目环境到部署Web应用的基本流程。在实际开发过程中,你可能还需要处理其他配置,如数据库连接、服务器端口冲突、日志配置等,但上述步骤提供了一个基础的指南。
标题和描述提到的"自动获取SVN代码并编译代码 以及自动部署方案"是一种高效的工作流,它整合了版本控制、编译和部署三个重要环节,使得开发团队能够快速响应变更,减少手动操作带来的错误。以下是关于这个主题的详细...
本文将详细介绍如何利用Hudson、Maven和SVN实现简单的自动化部署,这种方法已经在实际生产环境中得到了应用。 1. **Maven**: Maven是一个跨平台的项目管理工具,由Apache软件基金会维护。它主要用于Java项目的...
《svn提交日志导出工具v4.6详解》 在软件版本控制的世界里,Subversion(简称svn)是一款广泛使用的版本控制系统,它允许开发者跟踪和管理代码的修改历史,协同工作并保持代码库的一致性。对于svn的日常管理,有一...
- 通过命令行启动Tomcat,这将自动部署Jenkins。 - 浏览器访问Jenkins的地址来初始化配置。 6. 配置自动化构建流程 - 在Jenkins中创建新的任务,配置源码管理选择SVN,输入SVN仓库地址和认证信息。 - 配置构建...
在服务器通过设置svn服务端钩子可以强制开发人员提交注释和限制指定类型的文件提交。
通过编写一个批处理脚本,并将其作为SVN钩子的一部分,当有新的提交时,该脚本将被自动触发,从而实现将更新的内容自动发布到指定的Web服务器上。 ##### 2. 脚本解析 - **环境变量设置**:首先定义了几个关键的...
### SVN版本库导入导出详解 #### 环境配置 - **操作系统**: Windows 2003, 32位 - **SVN Server版本**: svn-win32-1.6.16 - **SVN Client版本**: TortoiseSVN-1.6.16.21511 在进行SVN版本库的导入导出之前,我们...
在SVN中,"钩子"(hooks)是服务器端的脚本,它们在特定事件(如提交)发生时自动执行,以实现额外的控制或自动化任务。"pre-commit"钩子就是在用户尝试提交更改到仓库之前运行的脚本,它可以用于执行验证、权限检查...
- 如果测试通过,则自动部署到测试或生产环境。 3. **通知机制**: - 构建完成后可以通过邮件、IM 工具等方式发送通知。 - 提供详细的构建报告,包括测试结果、构建日志等。 通过以上三个步骤,我们可以实现 Java...
该工具利用了强大的SVNKit库,这是一个纯Java实现的SVN客户端库,使开发者能够在不依赖操作系统特定功能的情况下,与SVN服务器进行交互。 该工具的核心功能包括: 1. **日志导出**:用户可以使用此工具查询和导出...
SVN钩子.wps
"svn日志导出增量补丁工具"是针对svn的一项实用功能,旨在提高开发效率,减少不必要的数据传输。通过这个工具,我们可以从svn的日志中筛选出特定的修改,然后生成只包含这些修改的增量补丁包。 首先,让我们了解...
这可能是一个自包含的 SVN Web 客户端实现,允许用户通过浏览器访问 SVN 仓库。 总结来说,SVN 客户端和 Web 客户端为开发者提供了灵活的版本控制方式,无论是在本地使用专业工具,还是通过浏览器远程访问。理解并...
通过以上步骤,我们不仅完成了SVN在Linux环境下的安装和配置,还实现了简单的钩子功能。这有助于自动化一些常见的任务,比如自动更新Web服务器上的代码,提高开发效率的同时也减少了人为错误的可能性。希望本文能...