jane_zhang 2007-12-3 15:53
Synergy使用两年总结篇--有点长,有点杂
以下文章,仅是我个人使用的一些感受和总结,观点只代表本人。
Synergy/CM用了已经两年多的时间了,两年多的时间里,从陌生到熟悉,一些感悟和总结,把它贴出来,也算是对自己这两年的一个总结。
其实相对于Clear Case这是一个相对简单许多的配置管理工具。绝大部分的开发人员对这套工具的抱怨,我想是来自于它对传统观念的挑战,并且面对众多的实际使用中遇到的问题,拿不出一个实际的解决方案,只是停留在理论表面上。很多细节的问题,需要配置管理人员在实际工作过程中,不断的总结方法,提供给开发人员。
在印度和美国,Synergy/CM的受众比中国大陆要多很多。为什么?其他原因不做深究,但是有个比较客观的原因就是,项目不同。国外的项目大多不似我们所面对的这样复杂,他们只是单一的,即使是有分支,也是很干脆的反支。而我们所面对的项目呢,有分有合,错综复杂,还要求权限控制到位,还要满足来自各方各面的要求,因为在使用过程中,会越来越发现,这个工具有技术顾问口中的工具,实在是差别太大。下面的三大部分,我来客观的介绍一下我的感受。
第一部分,是如何理解它的一些概念。
先说task:
使用Synergy,首先要理解它那些区别于传统的概念。实际上,很多开发人员并不理解基于task在实际上,到底是个什么概念,故而在使用中,就当作一个“容器”,把自己今天要干的事,都给它塞进去,然后一次性完成。这样的做法当时是痛快,但是日后查询,修改就很麻烦了。为此,我所负责的项目都要求,由CR到TASK,再到CR,这样形成一个闭环。一个task,就是为了解决这个CR,不带CR的task,我不会拿去发布。强制开发人员理解task这个概念。同时,开发过程中一定要注意current task,选择正确的task为current task,current task不能为空,否则会遇到右键某些选项没有的情况。
jane_zhang 2007-12-3 15:57
再说baseline and release
另外一个让开发人员,甚至是初接触这个工具的配置工程师感到迷惑的是release和baseline的区别,乍一看,有什么区别,干嘛要分开呢。其实,它这个release和我们通常的release是不一样的,所以大家才会觉得理解上有一定困难。这个release就像定个调一样,后面的开发都向着这个方向前进,直到方向转变,到下一个release。而baseline,则是把我们动态的研发,在某一个需要记忆的点,凝结一下,做个标记,是个大大或小小的阶段性总结。
接着说说,instance
Synergy区别于其他配置管理工具的还有一个新东西,叫instance,众所周知Synergy确定一个唯一的object的方法是,name version type and instance,其中instance是非常重要的。很多file看上去一模一样,可是一看instance,你就会发现这是两个不一样的东西了。为了方便起见,建议大家在工作面板,把instance项点出来,省得去看properties了。另外,经常我们会看到,其实一些一样的文件,instance都不同,那是因为开发人员在添加文件时,没有去先检索一下,服务器上是否已经有现成的了,就去添加了。这个习惯还是要培养的。
jane_zhang 2007-12-3 16:00
接下来是对于开发人员:
对于开发人员来说,要开始工作,首先要创建自己的工作空间,创建空间的方法就是copy project,这个就不多说了。只是插一句,如果开发人员只是想取某一个版本看看,并不是要在服务器上生成版本,那就不要用copy project,而要用copy to file system,而copy to file system的时候,[color=Blue]要注意不能有空格,否则会出错的[/color]。
我推荐给开发人员的使用流程为:
首先update,先把已经发布的项目组其他成员的工作成果,拿到本地。
创建task,创建属于自己的task,注意for release属性。
Check out,你会发现check out的文件会出现你的current task下
再次update,看是否服务器上已经有新的修改
如果有,那要看是否要合并一下,然后再次编译
最后在一次性 complete task,task所关联的文件会一次性complete。
对于已经完成的task,可以通过fix的方式进行修改,或通过exclude的方式进行隔离。当然以上方法有变通的,看开发人员爱好,也可以在workarea上修改,然后使用sync的方式进行上传,呵呵,其实我喜欢用sync,方便。
Synergy也提供了与其他一些小工具的融合,假如你不喜欢系统自带的工具的话。例如,如果你不喜欢自带的比较工具,可以去修改ccm.properties文件,做如下修改:
//windows.tool.compare.ascii = %ccm_compare
windows.tool.compare.ascii=d\:\\progra~1\\beyond~1\\bc2 "%file1" "%file2"
这只是举个例子,其他的类似了。
[[i] 本帖最后由 jane_zhang 于 2007-12-3 16:45 编辑 [/i]]
jane_zhang 2007-12-3 16:06
删除。
开发人员可以删除一切working状态的project task file等等,但是要注意,删除task的时候,不要留下一些孤立的文件。因为Synergy/CM通过task组织工作,这些可怜的孤立文件,找不到组织了,只能搁置在服务器上,占空间浪费。如果误操作了倒也不怕,在找个task,把它们加进来就好了。
编译。
我前面有过一个操作技巧,就是属性中,选中时间那项。默认情况下Copy project的时候,获得的文件的修改时间是 文件在synergy中保存的修改时间. 为了使得文件的修改时间为copy project动作的时间或者update或者use version 动作的时间, 按照如图设置进行. 这样可以避免编译出错(GNU make会去找是否有 相对于最新一次编译的结果(*.obj) 的依赖文件(*.c, *.cpp)有修改, 有的话才会重新编译).
我不知道怎么把图贴上来,真是郁闷!太笨了。
开发人员在工作过程中,要养成良好的习惯,[color=Blue]开始工作时要update,完成工作时要sync,工作过程中要尽量使用update,而非use version,[/color]当然如果已经深刻理解了其中含义,也可自己调节。
jane_zhang 2007-12-3 16:15
最关键的是对使用Synergy的配置管理工程师了,我觉得我们对这个工具的更深入理解,能够一定程度上帮助manager和项目团队。
对于SCM,我们要很熟悉Classic界面。我们运行命令,很多操作都在这里了。这里很重要的就是需要在另外一个classic界面来配置reconfigure template,开发人员要得到符合什么规则的内容,就需要在这里配置,当然前提是已经有了baseline,也就是有了基点,有了可供copy的baseline project。我们可以在这个配置空间里,给开发人员指定好用哪个baseline,用哪些task。这样开发人员才能理论上得到正确的东西。[color=Blue]在这里一定要注意,对baseline的指定,要不就一条,用最新的,要每次创建完baseline都指定,[/color]那可要记住了,这直接影响到开发人员得到的内容。极有可能,有一天,你桌上电话此起彼伏的,因为大家copy project或者update之后,发现,得到的都是红色的!,要犯众怒的哦!
而讲到这里,我就不能不提Synergy/CM的另外一个特色,就是Folder的概念。所谓Folder,就从字面上理解好了,就是一个folder,用来放东西的,呵呵,用来放符合一定条件的一系列task集合的。很好的利用这些folder,对于我们开发工作还是很有帮助的。以下内容是我从印度老师那里学来的,一直在实际中应用,受益匪浅阿。没有征得他同意,不知道可不可以发出来。其精髓就是通过folder来组织task,按folder的类型来组织task,设定的各个folder之间存在内在联系。对于一个项目而言,只要找到这几个folder,就找到了所有的task,而且是各有区分。Build时候,创建baseline的时候,检索的时候,超级有用。老师说,这是他独创的,不是Telelogic教的,挺能耐吧。我曾经尝试做一些简化,可是实际检测后,发现他的已经是最精辟了,佩服!很长时间的实践,我发现,不要乱动Synergy自带的folder,你要是动了,会发现Synergy又生出来一个,这个重复的folder越来越多,麻烦。
jane_zhang 2007-12-3 16:20
多项目合作问题,困扰我很久了。
我们工作中,经常会遇到多项目合作的问题,一个是在同一库内,一个是不同库内。先说在同一个库里面的。项目间有两种方式,一个是copy task,这种适合于几个task的情况;而另外一种,就是项目间如何把一系列的改动融合到一起呢,这个也是印度老师教的,真是学了人家不少东西,该请人家吃一顿。就是通过检测冲突的方式,等把一个一个冲突解决了,自然也就合并了,简单吧,我咋就没想到呢。当时听他介绍的时候,我很开心了。而Synergy/CM对冲突这块,我觉得它需要把各种冲突如何生成做个更深入的介绍,目前情况下,它只提供了开关文件和各种冲突的提示解决方案,这里有待提高。我很想自如的控制它的冲突产生,但是苦于找不到进一步的指导,只是有了自己的一些理解,很想验证一下的。那不同的库之间,就用DCM了,我是用脚本实现每天几次的收发,用起来还不错的。
在一个权限问题,Synergy在这上面比较弱的。我使用的版本只能用group进行控制,而且当时我是用admin的角色进行的,后来被老师教育了,慎用admin。要结合project 和release来做,我记住了。
这个admin实在是功能强大,我有时候会用它干点不好的事情,没有办法啊。例如应大家要求,把一些已经integrate的文件和project给删除了。这里有个可以参考的,其实有些file没必要删除,把状态变成rejected,也是可以的。
jane_zhang 2007-12-3 16:28
作为scm,随着对工具的理解和更多的实际应用,其实可扩展的还是很多的,例如:
添加关键字,这个Telelogic文件有介绍的,不过64a的要注意,升级之后有变化的,我已经吃了这个亏了。
如何用命令行执行工作?
如何给开发人员查询时,提供custom?
如何增加新属性?
如何把属性变成必须填写?
如何把新增的字段,在两个界面都出现?
如何修改属性值?
如何改变version delimiter?
Migrate需要注意哪些?
怎样优化配置库?
怎样检测孤立文件?
服务down了,通过哪些步骤确认问题所在?怎样一步步检查?
数据库备份问题。
还有更多就是一些实际上用到的很多小问题了,列出来都不知道放哪里。但是manager和developer问起来,我们得知道问题在哪里。例如版本是怎么理解的,1.1.1.2.1什么意思,为什么有的是全数字,有的前面就有好多字母?
因为希望对自己的这么多积累做个总结,所以贴上来,是因为刚开始学习这个的时候,哪里都找不到资料,如何解决实际问题,根本找不到地方去查。
howardling 2007-12-4 10:48
回复 6# 的帖子
冲突定义是有一个文件的,自己可以改
系统默认的冲突好像挺多的,可以根据项目的实际需要,让系统提示出的冲突是我们项目中实际发生的冲突
howardling 2007-12-4 10:51
文章精辟,语言通俗易懂,积极支持楼主继续发表自己的心得;
7楼好多topic, 楼主能举一些实例那是最好不过了,如:
“如何把新增的字段,在两个界面都出现?”
jane_zhang 2007-12-4 12:34
[quote]原帖由 [i]howardling[/i] 于 2007-12-4 10:48 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=65552&ptid=9150][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
冲突定义是有一个文件的,自己可以改
系统默认的冲突好像挺多的,可以根据项目的实际需要,让系统提示出的冲突是我们项目中实际发生的冲突 [/quote]
尝试过更改那个文件,但是在实际应用中,有些冲突的出现似乎并不应该出现的,出现了。而我的老师并不建议对冲突表建议更改。因此,我希望Telelogic能有相关的详尽讲解,很好的利用冲突能够解决实际工作中遇到的,较为头疼的多项目合并,非常实用。
vernicle 2007-12-4 23:51
说点不客气的,感觉是照本宣科。为了用好synergy找了不少的资料。很辛苦。相对而言 cmcross是资料比较多的,至少synergy的论坛还是人不少。但是查的资料越多,人也越郁闷。举例子而言,不知道上面这位管了两年的项目多个项目的,怎么管理多个项目的代码权限。
[[i] 本帖最后由 vernicle 于 2007-12-4 23:56 编辑 [/i]]
jane_zhang 2007-12-5 09:36
[quote]原帖由 [i]vernicle[/i] 于 2007-12-4 23:51 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=65741&ptid=9150][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
说点不客气的,感觉是照本宣科。为了用好synergy找了不少的资料。很辛苦。相对而言 cmcross是资料比较多的,至少synergy的论坛还是人不少。但是查的资料越多,人也越郁闷。举例子而言,不知道上面这位管了两年的项目 ... [/quote]
您认为对您没帮助,大可不必看。在下还不知道什么资料里面,有这种本可以让我宣。我想了一下,找不出任何告诉你如何管理多个项目权限的理由,抱歉!
howardling 2007-12-5 10:57
[quote]原帖由 [i]vernicle[/i] 于 2007-12-4 23:51 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=65741&ptid=9150][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
说点不客气的,感觉是照本宣科。为了用好synergy找了不少的资料。很辛苦。相对而言 cmcross是资料比较多的,至少synergy的论坛还是人不少。但是查的资料越多,人也越郁闷。举例子而言,不知道上面这位管了两年的项目 ... [/quote]
如果你认为楼主得原创是照本宣科,那就把你得心得写出来吧,大家共同进步。
楼主得内容虽不是很深入,但很适合初学者和对synergy没接触过的人,对于这类群体而言,已经是很优秀的文章了.
vernicle 2007-12-5 20:07
[quote]原帖由 [i]jane_zhang[/i] 于 2007-12-5 09:36 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=65763&ptid=9150][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
您认为对您没帮助,大可不必看。在下还不知道什么资料里面,有这种本可以让我宣。我想了一下,找不出任何告诉你如何管理多个项目权限的理由,抱歉! [/quote]
1. 我不习惯看新闻联播,一直认为新闻联播是照本宣科,你的文体基本上和新闻联播相当,从头到尾就一个字,好,所以我认为是照本宣科。
2. 多说两句是因为这里是论坛,对只谈优点不谈问题的文章,我个人认为不应该加精,这是我的态度。
3.对于你个人在这个帖子里你的言辞,我保留私人的意见。希望你能够平等的对待论坛里的每一个人,把你自己的位置摆正了,我没有在任何文字里请求你或者希望你给我任何问题的解答,所以不用你高高在上的表示抱歉。
4. 关于多个项目权限的问题,是我遇到的问题,举这个例子,是认为大家都可能遇到奇怪你居然只字不提。
jane_zhang 2007-12-6 10:25
很同意一个观点,把心态摆正了最重要了。笔者写的文章,只是因为刚巧在整理,毕竟已经用了这么久,总是要做个总结,何况,老师在单单在Synergy领域都已经11年了,他给的口授和邮件资料不总结太冤枉了.在我学习的过程中,发现在中国大陆,除了官方资料外,实际应用方面的文章特别少,找这些资料找得让人心烦意乱。所以就想陆陆续续的把这些东西都贴上来,结果才开了个头,就惹得某些人士不乐意了。学习一个东西,获取他方的信息和解答是学习的一个很重要的步骤,但是在学习了这些知识后,能够把它转化为自己的东西,用自己的语言表达出来,利人又利己。不过,好像事实并非如此,罢了。
每个人都有喜欢,都有不喜欢的,不喜欢就绕个道,谁也不能强迫得谁,但尊重他人劳动成果是更古不变的为人之道。看过的认为有可取之处,尽管拿去用;觉得还欠缺的,尽可以自己去发表文章来阐述。
我觉得山外有山,天外有天,三人行必有我师,我也希望看到能够解惑的好文章,毕竟虚心使人进步!
懂你 2007-12-6 11:09
我很同意Jane_Zhang的做法,同时SCMLife也在极力营造一种各抒己见的氛围。把自己在日常工作中的一些心得、体会写出来与大家来分享。如果有不足,可以提出,但是绝对禁止任何打击诋毁的言辞。
如果你有更好的见解,也欢迎开贴。与更多的朋友来交流。
总之一句话,Jane_zhang我们永远支持你。
hasjing 2007-12-6 20:57
每一个人都有自己的经历,有自己的视角,只要是自己独立思考过的东西,并且愿意贡献出来给大家就是我们最欢迎的。
只要能够对一些人起到帮助的作用就是精品。
我们需要jane_zhang这样的朋友。
如果vernicle你有更深刻的认识和想法,欢迎你总结并且Share出来,我们同样给你加精。
一人一星球 2007-12-19 14:28
回复 5# 的帖子
不好意思地说一下,我估计使用folder来组织task可能不属于印度人的创造。个人认为Telelogic设计folder就是为了这个目的。
jane_zhang 2007-12-20 10:32
[quote]原帖由 [i]一人一星球[/i] 于 2007-12-19 14:28 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=68046&ptid=9150][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
不好意思地说一下,我估计使用folder来组织task可能不属于印度人的创造。个人认为Telelogic设计folder就是为了这个目的。 [/quote]
同意你的观点,大概是我没有表述清楚,我指得是利用folder组织task的方式,以不同模式的不同目的的folder来流程化配置策略思路,源于实践。
hasjing 2007-12-20 22:56
以Folder的方式管理Task,通过收集Task产生不同的工作区的版本,是Synergy非常灵活的Release构造软件的方式,这点很象是在汽车生产流水线上的组装过程;