|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-07-14
最近闲着没事,真的是很闲,居然要我去看看oracle数据库performance tuning,而且应为太闲,发现了effective oracle by design 的第八章了,是itpub 上的一位会员找tom ,要的,这个帖子在 http://www.itpub.net/221173,2.html , 超爆笑,具体请看我的另一篇文章 http://jjjava.javaeye.com/admin/show/101065
因为公司的QA抱怨说速度很慢,我们只有Stage环境,生产环境不在我们这边,公司唯一的一个DBA 被派去做enhancement 了(汗) ,于是被指派研究如何在ant 脚本中显示svn 中的commit 消息.需求大概是这样的: 每次commit 的时候我们都会填写commit 的message , 比如 bug fix #98435 : < 现在的情况: 改变之后的状态: 方便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...]
接着我就研究怎么样在ant script 里面加入svn 的log 信息. 我发现打开svnant.jar 包的时候里面有个 svn.xml 文件,里面记录的就是所有svnkit 支持的svn ant task . 其中只需要一个就够了, 接着我就写script , xml 代码
其中startRevision 和 stopRevision 的值可以是
这段代码就是在你的script 目录下面会产生一个revision.log 文件,大概这样的格式 ------------------------------------------------------------------------ xml 代码
最后这样就算是完成了. 关于svnant 的详细task 请参考 http://subclipse.tigris.org/svnant/svn.html 关于svn 版本号之间的区别 http://svnbook.subversion.org.cn/1.2/svn.tour.revs.html
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-07-14
大家把xml code 里面的<!--</span--> 当成是</ 标签,估计是fckeditor 的原因.
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-13
顶~~ 谢谢楼主
想问一下 8:30更新的时候公司没人,主要是针对昨天新做完的EN 和 5点过后check in 的bug , 5:00 的更新 这段时间 startRevision="HEAD" stopRevision="PREV" /> revision.log里面 怎么实现当天的所有commit的信息。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-26
<tstamp>
<format property="current.date" pattern="MM-dd-yyyy" locale="en" /> </tstamp> <target name="updateSVN" > <svn javahl="true"> <log destfile="revision.log" path="XXX" asXml="false" startRevision="${current.date}" stopRevision="HEAD" /> </svn> </target> |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-28
谢谢~~
自动的生存时间 pattern="MM-dd-yyyy" 需要每天去修改日期嘛?这样不是还要每天去设置一下,时间会按天递增的方式嘛? |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-28
这种操作用脚本语言来做是最好的选择,我记的楼主的这个想法正是《EveryDay Scripting With Ruby》一书中的一个例子
#---
# Excerpted from "Everyday Scripting in Ruby"
# We make no guarantees that this code is fit for any purpose.
# Visit http://www.pragmaticprogrammer.com/titles/bmsft for more book information.
#---
class SubversionRepository
def initialize(root)
@root=root
end
def date(a_time)
a_time.strftime("%Y-%m-%d")
end
def change_count_for(name, a_time)
extract_change_count_from(log(name, date(a_time)))
end
def extract_change_count_from(log_text)
lines = log_text.split("\n")
dashed_lines = lines.find_all do | line |
line.include?('--------')
end
dashed_lines.length - 1
end
def log(subsystem,start_date)
timespan = "--revision HEAD:{#{start_date}}"
`svn log #{timespan} #{@root}/#{subsystem}`
end
end
class Formatter
# Public interface
def initialize
@lines = []
end
def report_range(from, to)
@from = from
@to = to
end
def use_subsystem_with_change_count(name, count)
@lines.push(subsystem_line(name, count))
end
def output
([header] + lines_ordered_by_descending_change_count).join("\n")
end
# Helpers
def date(time)
date_format = "%Y-%m-%d"
time.strftime(date_format).sub(' 0', ' ')
end
def header
"Changes between #{date(@from)} and #{date(@to)}:"
end
def subsystem_line(subsystem_name, change_count)
asterisks = asterisks_for(change_count)
"#{subsystem_name.rjust(14)} #{asterisks} (#{change_count})"
end
def asterisks_for(an_integer)
'*' * (an_integer / 5.0).round
end
def lines_ordered_by_descending_change_count
@lines.sort do | first, second |
first_count = churn_line_to_int(first)
second_count = churn_line_to_int(second)
- (first_count <=> second_count)
end
end
def churn_line_to_int(line)
/\((\d+)\)/.match(line)[1].to_i
end
end
def month_before(a_time)
a_time - 28 * 24 * 60 * 60
end
if $0 == __FILE__
subsystem_names = ['lib', 'test']
root = "http://127.0.0.1/svn/script/trunks/"
repository = SubversionRepository.new(root)
last_month = month_before(Time.now)
formatter = Formatter.new
formatter.report_range(last_month, Time.now)
subsystem_names.each do | name |
formatter.use_subsystem_with_change_count(
name, repository.change_count_for(name, last_month))
end
puts formatter.output
end
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-20
build时 想要的是自动生存的一天或周期svn commit的log信息,为了方便作为考察用
|
|
| 返回顶楼 | |
浏览 2866 次






