魔头工坊

2009年5月6日 #

Subversion 分支操作

V2 Updated by Marvin @ May 6, 2009

整理自免费的svnbook 中文版

 

创建分支

创建分支最快捷简便的方法就是直接对url操作,然后从新的url co出工作拷贝。在Subversion server上,用硬链接的方式处理不同version之间相同的文件。

svn copy http://svn.example.com/svnroot/comet/trunk http://svn.example.com/svnroot/comet/branches/2.8 –m “creating a private branch of comet”

 

合并一个分支上的修改到主干

Subversion的分支合并不是一个高风险的事情。其实Subversion并没有真正意义的分支概念,只有copy,但每个copy都会保留其所有的历史信息。像Clearcase那样的单独一个维度的version tag是不存在的,Subversion中的tag只是用来做快照而已,而且本质上也是copy,如果你提交新东西,那它就和branch是一样的。

简单地说,它一共只做了两件事。第一,比较两个版本的不同,这和你用svn diff得到的结果是一样的,只是svn diff会把changes打印出来。第二,把changes应用到你指定的工作拷贝上去,这表现为你的工作拷贝的本地修改,你可以在这个基础上再做修改,或是检查有没有问题,然后再提交。Subversion server并不关心你的提交是来自svn merge的修改,还是你自己改的代码。如果对结果不满意或者后悔了,一样可以用svn revert取消本地修改。

一个好的习惯是,提交的时候在注释中写清楚是从那个版本merge过来的。

Best practice 关于从某分支上merge changes到主干:

step1:找到前一次合并到主干时的version(341)

svn log –v –-stop-on-copy http://svn.example.com/svnroot/comet/branches/2.8

step2:切换到trunk的本地工作目录

step3:update到最新,获得当前HEAD的version(405)

svn update

我们只用比较分支的初始状态和最终状态,然后把这些changes merge到主干上去,而不是分支的初始状态和主干的最终状态。

step4:merge

svn merge –r 341:405 http://svn.example.com/svnroot/comet/branches/2.8

此处省略了目标工作拷贝,默认是当前目录的工作拷贝,也可以指定

svn merge –r 341:405 http://svn.example.com/svnroot/comet/branches/2.8 my_trunk_copy

step5:查看merge后的状态

svn status

step6:编译测试看有无问题

step7:提交

svn commit –m “Merged 2.8 changes r341:405 into the trunk.”

 

 

 

 

切换到另一个分支

如果你不是同时在几个分支上工作,那么没有必要在你的机器上保留多个不同分支的工作拷贝。你可以用svn switch在不同的分支间切换。

例如你现在的工作拷贝是基于2.8 branch的,你想切换到trunk上去,只要运行

svn switch http://svn.example.com/svnroot/comet/trunk

svn switch 还可以接受-r 参数来制定要切换的版本号,也支持只对部分目录执行版本切换。

posted @ 2009-05-06 12:06 Marvin 阅读(1589) | 评论 (0)编辑 收藏

2009年5月5日 #

抽象类

  • 抽象类中的方法可以全部实现吗?
     
可以。可以给普通类加上abstract变成抽象类,但这样这个类就不能再实例化了
  • abstract 方法可以有实现吗?
      不可以

  • 普通类可以有抽象方法吗?
      
不可以,只要有一个方法是抽象的,类就必须定义成抽象类

posted @ 2009-05-05 15:31 Marvin 阅读(171) | 评论 (0)编辑 收藏

2009年4月29日 #

IBM WSDL2Java 工具

今天用了IBM Websphere带的WSDL2Java工具

生成web service client端的stub文件
直接运行命令:
%WAS_HOME%/AppServer/bin/WSDL2Java -r client ****.wsdl
会直接用tns的反序作为包名

其他参数可以用 -h 查看详细解释

从标准的Parlay X的WSDL生成结果来看,主要是三个部分:
common types 生成到scheme包
WSDL interface 生成到_interface包
WSDL service 生成到service包

生成web service server端的skeleton文件
运行命令:
Web container形式
%WAS_HOME%/AppServer/bin/WSDL2Java -r server -c web ****.wsdl
EJB container形式
%WAS_HOME%/AppServer/bin/WSDL2Java -r server -c ejb ****.wsdl

生成的code都是三个部分 service interface 和 scheme
Web形式会生成WEB-INF文件夹,而EJB形式则会生成META-INF


posted @ 2009-04-29 15:22 Marvin 阅读(338) | 评论 (0)编辑 收藏

2009年4月28日 #

ScribeFire On BlogJava.net

下载ScribeFire firefox插件


打开ScribeFire
选择“添加博客”
输入自己的blogjava博客地址,ScribeFire会自动检测Blog的类型
检测不成功,选择手动设置
博客系统类型选择 MetaWeblog API
API URL:http://www.blogjava.net/superliuwr/services/metaweblog.aspx
输入用户名,例如superliuwr
输入密码,例如不能告诉你
就可以了

如果能看到这篇文章那就是成功了




posted @ 2009-04-28 13:23 Marvin 阅读(145) | 评论 (0)编辑 收藏

2008年9月8日 #

Web Debug Tool

For Firefox
Firebug and FireCookie

For IE
CompanionJS
DebugToolbar
DebugInforbar

posted @ 2008-09-08 18:03 Marvin 阅读(224) | 评论 (0)编辑 收藏

仅列出标题