最近闲着没事,真的是很闲,居然要我去看看oracle数据库performance tuning,而且应为太闲,发现了effective oracle by design 的第八章了,是itpub 上的一位会员找tom ,要的,这个帖子在 http://www.itpub.net/221173,2.html , 超爆笑,具体请看我的另一篇文章
http://jjjava.iteye.com/admin/show/101065
因为公司的QA抱怨说速度很慢,我们只有Stage环境,生产环境不在我们这边,公司唯一的一个DBA 被派去做enhancement 了(汗) ,于是被指派研究如何在ant 脚本中显示svn 中的commit 消息.需求大概是这样的:
每次commit 的时候我们都会填写commit 的message , 比如 bug fix #98435 : <<bug description="">> 或者类是 EN #19841 : <<xxxx enhancement="">> , 然后我们的Stage 环境,就是大家可以公共访问的环境也同时提供给QA 做test 的环境,每天会更新两次早上8:30一次(这个时候大家还没有上班),然后下午5:00一次(我们6:00下班),8:30更新的时候公司没人,主要是针对昨天新做完的EN 和 5点过后check in 的bug , 5:00 的更新最要是让QA 做Bug verify (因为每天结束了,Team Leader 要把bug 发到美国那边去,美国那边就不用做重复的工作了) .我们以前有什么check in 都是Team Leader 发邮件给QA , 告诉他们那些bug check in 了,那些enhancement check in 了,然后全部都是靠搜集我们每天提交给他的work list , 然后他就凭脑袋记住然后发邮件给QA , 这样一个是容易出错,有可能是我们自己写的work list 出错了,比如写错了bug number ,另一个是Team Leader 忘记搜集某个人work list 了( 我们不用issue tracking 工具,因为美国那边认为不值得花钱买一个JIRA , 而且他们相信他们用手工的方式工作了多年也没有什么很大的问题,即使我们自己用开源的issue tracking 工具,他们也拒绝合作,强吧),所以就要我写个ant script 来自动在邮件里面列出更新了bug 或者enhancement.</xxxx></bug>
现在的情况:
我们已经有ant script 可以执行 更新code > 编译code > 混淆 code > 最后发邮件给所有人 , 我们更新的时候是用的windows 系统的task scheduler.
改变之后的状态:
update 的时候要有update log 和 更新的文件列表 , 邮件里面要有update.log 的消息
方便QA 快速知道开发的状态.
用ant 脚本来更新code 都是用的svnkit 包,首先下载svnkit 包, 大概是以下几个文件,svnkit.jar , svnant.jar , SvnClientAdapter.jar ,svnjavahl.jar(文件名记得不是很清楚了),放到ant 的lib 目录下面, 具体参考http://subclipse.tigris.org/svnant.html 上面的文档.
我查了一下如何显示svn 的update log 方法 :
http://svnbook.red-bean.com/en/1.0/re15.html
你要先装svn 的客户端(运行这个例子的时候需要,不是你用svnkit 的时候需要)
然后
svn log [PATH]
svn log URL [PATH...]
它有几个参数:
--revision (-r) REV
--quiet (-q)
--verbose (-v)
--targets FILENAME
--stop-on-copy
--incremental
--xml
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
比如:
svn log http://svn.red-bean.com/repos/test/foo.c
它会列出所有的foo.c 这个文件的所有修改历史
svn log http://svn.red-bean.com/repos
它会列出你整个项目的修改历史
svn log http://svn.red-bean.com/repos -r 14 >mylog.txt
svn log http://svn.red-bean.com/repos -r 19>>mylog.txt
svn log http://svn.red-bean.com/repos -r 20>>mylog.txt
它会先创建一个revision 14 的mylog.txt 文件,后面两个命令会把revision 19 个和revision 20 的log 加入到mylog.txt 文件中.
关于svn log 命令行的详细用法请参考
http://svnbook.red-bean.com/en/1.0/re15.html
接着我就研究怎么样在ant script 里面加入svn 的log 信息.
我发现打开svnant.jar 包的时候里面有个 svn.xml 文件,里面记录的就是所有svnkit 支持的svn ant task . 其中只需要一个就够了,
<taskdef classname="org.tigris.subversion.svnant.SvnTask" name="svn"></taskdef>
接着我就写script ,
<taskdef classname="org.tigris.subversion.svnant.SvnTask" name="svn"></taskdef>
<!----><target name="updateSVN"><svn javahl="true" password="xxxPassword" username="xxxUser"><svn javahl="true"><log destfile="revision.log"></log></svn></svn></target>
xml 代码
- <target name="updateSVN" >
- <svn username="XXX" password="XXX" javahl="true">
- <update dir="${XXX}" />
- <!----> </svn>
- <svn javahl="true">
- <log destfile="revision.log"
- path="${XXX}"
- asXml="false"
- startRevision="HEAD"
- stopRevision="PREV" />
- <!----> </svn>
- <echo message="Update finished successfully, please see attached for version information!" />
- <!----></target>
<target name="updateSVN"><svn javahl="true" password="xxxPassword" username="xxxUser"><svn javahl="true"><echo message="Update finished successfully, please see revision.log for version information!"></echo></svn></svn></target>
<target name="updateSVN"><svn javahl="true" password="xxxPassword" username="xxxUser"><svn javahl="true"><echo message="Update finished successfully, please see revision.log for version information!">
</echo></svn></svn></target>
其中startRevision 和 stopRevision 的值可以是
HEAD : 版本库中最新的(或者是“最年轻的”)版本。BASE : 工作拷贝中一个条目的修订版本号,如果这个版本在本地修改了,则“BASE版本”就是这个条目在本地未修改的版本。COMMITTED : 在BASE
版本之前(或在Base)一个项目最后修改的版本。PREV : 一个项目最后修改版本之前的那个版本(技术上为COMMITTED -1)。
这段代码就是在你的script 目录下面会产生一个revision.log 文件,大概这样的格式
------------------------------------------------------------------------
r14 | ... xxx bug fix #123456 :xxx
------------------------------------------------------------------------
r15 | ... xxx en #123456 : xxx
------------------------------------------------------------------------
然后发邮件:
<target depends="obfuscate" name="email"> <mail mailhost="xxx.xxx.xxx"><from address="developers@xxx.com" name="xxx"></from></mail></target>
<target depends="obfuscate" name="email"><mail mailhost="xxx.xxx.xxx"><from address="developers@xxx.com" name="xxx"> </from></mail></target>
xml 代码
- <target name="sendmail" depends="obfuscate">
- <mail mailhost="XXX.XXX.XXX"
- subject="Stage Updated at ${updatetime}"
- messagefile="revision.log"
- files="result.log">
- <from name="Stage Update Agent" address="developers@XXX.con" />
- <to name="Developers" address="developers@XXX.con" />
- <!---->mail>
- <!---->target>
最后这样就算是完成了.
关于svnant 的详细task 请参考 http://subclipse.tigris.org/svnant/svn.html
关于svn 版本号之间的区别 http://svnbook.subversion.org.cn/1.2/svn.tour.revs.html
分享到:
相关推荐
本代码实现了用python处理svn log数据(xml格式),把Log的数据转化为一个python的数据结构,方便作更进一步数据挖掘!
在给定的场景中,"ant 脚本从svn上取代码打包代码全,同时包括相关的jar包",这意味着我们需要了解如何用Ant配合Subversion(SVN)进行代码管理,并打包项目,同时处理依赖的jar文件。 首先,让我们来看看Ant脚本的...
- **获取代码**:首先,Ant脚本会从SVN仓库中检出或更新最新的代码到本地工作目录。 - **增量分析**:通过比较上一次构建与当前版本的差异,找出新增或修改的文件。 - **编译增量**:只编译自上次构建以来发生...
这个jar包(xmltask.jar)提供了一种方式,使得我们可以在Ant脚本中添加、删除、修改XML元素,这对于读取和处理SVN版本信息非常有用,因为SVN的版本信息通常存储在XML格式的svn:log属性中。 要使用XMLTask,首先...
方法一:双击WINsvnlog2excel.bat,即可在当前文件夹下生成SVNLog的excel文件,默认导出bat文件第二行中SVNPATH所定义的SVN路径的LOG。可以修改bat文件中第二行的SVNPATH,导出指定SVN路径的log 方法二:在CMD...
svnlog2excel.jar是用于将xml格式的svnlog转成excel表格。使用方法为 java -jar svnlog2excel.jar changelog.xml changelog.xls svnlog2excel.sh 将指定SVN路径的版本记录导出为xml格式,去掉第一个版本(一般为...
标题“ant学习之集成svn”涉及的是在Java项目中使用...总的来说,"ant学习之集成svn"是一个关于如何在Java开发环境中利用Apache Ant工具与Subversion进行有效协作的主题,帮助开发者实现源代码的版本控制和构建自动化。
`svnant`是Ant的一个任务库,它提供了与SVN交互的能力,允许你在Ant脚本中执行诸如checkout(检出)、commit(提交)、update(更新)等SVN命令。 要使用`svnant`,首先需要将其添加到Ant的类路径中。`svnant-1.1.0...
在实际应用中,`build.xml`文件会包含一系列Ant任务,比如`svnCheckout`来从SVN检出代码,`javac`来编译Java源码,`junit`来运行测试,以及`jar`或`war`来打包应用。这些任务可以通过Ant的条件语句和循环结构进行...
在这个SVN+ant服务器代码打包编译流程中,我们将深入探讨这两个工具的集成使用,以及如何通过build.xml和build.properties文件实现自动化编译。 首先,让我们了解SVN的安装和配置。在Windows上,你可以下载...
标题中的“antsvn更新打包部署提交自动化”涉及的是在软件开发过程中如何利用Ant(一个Java构建工具)和Subversion(SVN,版本控制系统)实现自动化的构建、更新、打包、部署和提交流程。这个过程旨在提高开发效率,...
在Jenkins项目配置中指定Ant的脚本文件位置,Jenkins就会在触发构建时执行这个脚本,完成项目的自动化构建。这样,开发者只需将代码提交到SVN仓库,Jenkins就会自动进行后续的构建工作,从而实现持续集成。 在整个...
在软件开发过程中,为了确保代码质量并及时发现问题,很多团队会选择实施“每日构建”(Daily Build)机制。所谓每日构建,是指按照固定周期(通常是每天)对项目的源代码进行完整的自动化构建、测试乃至部署的过程...
- build.xml文件中定义了多个目标(target),包括清理、从Svn检出代码、运行JUnit测试等。 - 使用`<path>`元素定义类路径,包括Svn相关的jar文件。 - 使用`<taskdef>`元素加载Svn任务的定义,如`<svn>`标签。 -...
SVN自动提交脚本,通过执行SVN Status命令来获取当前目录的Svn diff,通过替换SVN diff来将文件列表转换成Svn提交命令,最后对执行所有SVN命令来完成自动提交,可以用于SVN仓库的代码自动导入
在版本控制系统Subversion(简称svn)中,日志(log)功能是用于记录每一次提交更改的详细信息,包括更改的原因、涉及的文件等。对于团队协作来说,规范的日志信息有助于理解代码变更历史,便于问题排查和代码审查。...
`make_svn.sh`脚本可能是用于安装SVN编译过程中需要的特定库,例如Serf。这个脚本可能包括: 1. 检查系统是否已安装所需库,如果没有,提示用户安装或自动下载编译。 2. 下载库的源代码。 3. 解压源代码。 4. 配置、...
在本文中,我们将详细介绍如何配置Ant、JUnit和SVN,这三个工具在Java开发中的重要性以及它们的安装过程。 首先,Ant是一个基于Java和XML的构建工具,它的主要功能是管理和自动化项目的构建过程。Ant通过一个名为...
5. **执行构建**:运行`build.bat`批处理文件,这个文件通常会调用Ant来执行`build.xml`中的任务。如果`build.bat`文件有备份(如`build.bat.bak`),可能是为了防止意外改动,保留了原始的构建脚本。 6. **依赖...
在软件开发过程中,版本控制工具Subversion(SVN)被广泛用于管理项目代码,而Apache Ant则是一个流行的Java构建工具,用于自动化构建、测试和部署任务。Ant SVN插件是将这两者结合的关键,它允许Ant脚本直接与SVN...