梦想飞翔

自强不息
posts - 111, comments - 30, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

SVN提交更新的一个准则

Posted on 2013-02-14 19:43 love1563 阅读(5165) 评论(9)  编辑  收藏 所属分类: SVN

查阅了一下网络和博客园,发现还没有一个明确地指导源码管理提交准则的相关文章,因此斗胆整理了一部分自己平时开发管理的心得,加上查阅了部分英文资料写了一个不算很完善的SVN提交准则。

 

负责而谨慎地提交自己的代码

SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且并且自己测试之后,谨慎地提交。

如果提交过程中产生了冲突,则需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。

如果提交过程中产生了更新,则也是需要重新编译并且完成自己的一些必要测试,再进行提交。

 

保持原子性的提交

每次提交的间歇尽可能地短,以一个小时,两个小时的开发工作为宜。如在更改UI界面的时候,可以每完成一个UI界面的修改或者设计,就提交一次。在开发功能模块的时候,可以每完成一个小细节功能的测试,就提交一次,在修改bug的时候,每修改掉一个bug并且确认修改了这个bug,也就提交一次。我们提倡多提交,也就能多为代码添加上保险。

 

不要提交自动生成的文件

Visual Studio在生成过程中会产生很多自动文件,如.suo等配置文件,Debug,Release,Obj等编译文件,以及其他的一些自动生成,同编译代码无关的文件,这些文件在提交的时候不应该签入,如果不小心签入了,需要使用Delete命令从仓库中删除。

 

不要提交不能通过编译的代码

代码在提交之前,首先要确认自己能够在本地编译。如果在代码中使用了第三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库或者没有放入GAC(针对.Net Framework)中,项目经理在准备项目工作区域的时候,需要考虑到这样的情况,确保开发小组成员在签出代码之后能够在统一的环境中进行编译。

 

不要提交自己不明白的代码

代码在提交入SVN之后,你的代码将被项目成员所分享。如果提交了你不明白的代码,你看不懂,别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患。因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解。

 

提前宣布自己的工作计划

在自己准备开始进行某项功能的修改之前,先给工作小组的成员谈谈自己的修改计划,让大家都能了解你的思想,了解你即将对软件作出的修改,这样能尽可能的减少在开发过程中可能出现的冲突,提高开发效率。同时你也能够在和成员的交流中发现自己之前设计的不足,完善你的设计。

 

对提交的信息采用明晰的标注

+) 表示增加了功能

*) 表示对某些功能进行了更改

-) 表示删除了文件,或者对某些功能进行了裁剪,删除,屏蔽。

b) 表示修正了具体的某个bug


评论

# re: SVN提交更新的一个准则 [未登录]  回复  更多评论   

2013-02-14 20:50 by Samuel
你在这里说明了SVN提交的一些准则,挺好的。但不完整,SVN提交中最重要的一部分,你遗漏了,就是SVN comment的事情,以及相关的一些准则。
SVN comment规则
[CODE]开头,表示:编码
[BUG]开头,表示:修复BUG
[PM][DOC]开头,表示项目管理文档

等等,你可以定义自己的规则

# re: SVN提交更新的一个准则   回复  更多评论   

2013-02-15 14:51 by Niko7
总结的挺好。以前给新员工培训的时候讲过这个话题,不过没想过要发到网上来,还是你有心。

我总结起来,就是要原子性,独立性,写日志。
就是每次修改肯定有个目的,每次提交的代码应该能完整的达到这个目的,不能把一次修改分成多次提交。这是原子性。在svn里体现为一个变更集。
如果改动比较多,可以分解为解决问题的若干个步骤,那么分批次提交,尽量每个变更集都是目的明确的,不要带有一石多鸟的效果。这是独立性。
做到这两点,日志就很好写,然后把日志写明白。做不到这两点的话,写日志可罗嗦了。

机器生成的代码原则上不提交,但是如果是类库工程,不妨把有里程碑意义的版本的二进制成品在svn里留一份。

关于多久提交一次,我觉得这个就太教条了,有时是几分钟提交一次,有时是几小时提交一次。我觉得不必要求每天下班时要提交。但是上班时要查看更新是必要的。

关于日志,作为一个团队,尽量要用术语和符号,这样可以使日志简洁。

# re: SVN提交更新的一个准则 [未登录]  回复  更多评论   

2013-02-16 22:32 by Samuel
同意楼上的,剩下就是执行和监督了。如果能集成一个WIKI,比如:trac;可实时查看SVN的提交的日志。

# re: SVN提交更新的一个准则   回复  更多评论   

2013-02-17 10:48 by 九星天辰诀
这个准则希望能应用的更广泛。

# re: SVN提交更新的一个准则   回复  更多评论   

2013-02-18 10:58 by 11
12. /Windchill/db/db.properties check.
If wt.pom.dbShemaUser=<windchill_install_username> doesn’t exist.
a. Add site.xconf
<Property name="wt.pom.dbShemaUser" overridable="true"
targetFile="db/db.properties"
value="wtadmin"/>
b. xconfmanager – p
c. upgrademanager -cs

13. Update the Windchill Database to the Current Maintenance Release
Execute the update tool:
Windows
Start Apache

update_tool -username <username> -password <password> -noui
UNIX
Update_Tool.sh -username <username> -password <password> -noui


14. Please ignore Windchill Business report component and Windchill Business report muliti language component

15 .If start apache and windchill start normally, but home page can not access and alert error message 404 can not found, Please add a line “Include conf/extra/app-Windchill.conf” into apache/conf/additions.conf

# re: SVN提交更新的一个准则   回复  更多评论   

2013-02-19 08:16 by Unmi
@Niko7
二进制的成品要与工作目录分开来,一般开发是在 trunk 下,二进制成品放在 release 目录下。

# re: SVN提交更新的一个准则   回复  更多评论   

2013-02-19 08:17 by Unmi
@Samuel
有一个好的查看 SVN 日志的工具是 Crucible, 与 Jira 是一个公司出品的。

# re: SVN提交更新的一个准则   回复  更多评论   

2013-02-19 13:04 by Niko7
@Samuel

谈到监督和执行,就存在多个层面了。
仅仅是对于上述原则的辅助支持,可以用svn hook来强制写日志。
关于是否可以编译通过,可以用持续构建。

如果追求更高的效果,那就是SCM全套了。

# re: SVN提交更新的一个准则   回复  更多评论   

2013-03-22 22:24 by dohkoos
原子性应该不是以时间来确定,而是由要完成的任务来确定。譬如修改某个bug,用了几天,那也算是符合原子性。

然后还要重复下:尽早提交,尽快提交,经常提交以及写commit messages。

只有注册用户登录后才能发表评论。


网站导航: