姜博:SVN使用规范

SVN使用规范

1.提交必须写注释

清晰的提交注释有助于别人理解你所做的修改,出现问题时能够快速定位,也有助于项目经理把握开发进度。所以,在提交代码时,要填写明晰的标注,能够概要的描述所提交文件的信息,让项目组其他成员在看到标注后不用详细看代码就能了解你所做的修改。

2.禁止提交未编译通过的代码

代码在提交之前,首先要确认自己能够在本地编译,保证主干永远是畅通的。如果引用了新的类库,确保相应的pom.xml文件也已提交。

  • 单元测试通过
  • 应用启动正常
3.不要提交自己不明白的代码

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

4.不要提交本地自动生成文件

eclipse会自动生成一些工程文件如.classpath,.settings等文件,以及项目编译生成的临时文件target, .class等等。提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作。通常在新建项目或模块时会设置相关的ignore属性,具体设置方法详见设置ignore,external属性

5.按功能模块整体提交,提交不要过于频繁

完成一个功能模块后,将该模块相关修改作为整体提交。不宜分离过于频繁提交,使功能上不同步,并无限增大svn版本号

6.提交后svn st检查是否有遗漏

提交后svn st检查下是否有冲突,有遗漏的代码

7.尽量使用命令提交

eclipse中的svn插件很便捷,但有时会存在漏提交,或多提交的问题,如总控的pom.xml在eclipse中看不到,易造成漏提交,尽量使用svn命令来提交。

  • 命令会用了,原理就知道了
8.慎用锁定功能

在项目中要慎用锁定的功能,在你锁定了一个文件之后别人就无法继续修改提交该文件,虽然可以减少冲突的发生率,但是可能会影响项目组中其他人员的工作。平时只有在编辑那些无法合并的文件(例如图片文件,flash文件等)时,才适当的采用锁定操作。

  • 如果你的需求开发跨度很大,建议每周合并一次主干

SVN使用技巧

常用命令

1.svn co [svn地址] [本地目录]:签出工作拷贝

svn co http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV rate (【注】:自定义目录,本地目录)

2.svn st:查看工作拷贝状态

svn st
X       bundle/rpm/framework
M       quickconfig.sh
X       deploy/jboss_server
每行首字母的含义:
"!"表示:本地执行了"rm -rf",但是未执行"svn del"的状态。
"?"表示:本地新加了一个文件,但是未执行"svn add"的状态。
"A"表示:本地新加了一个文件,且执行了"svn add"的状态。
"X"表示:执行了"svn external"的状态。
"D"表示:本地执行了"rm -rf",且执行了"svn del"的状态。
"M"表示:本地修改了该文件时的状态。
"C"表示:冲突状态,是重点关注状态之一。

3.svn diff:比较两个版本拷贝的区别
比较本地文件与与拷贝版本的区别

svn diff web/com/alibaba/china/app/levit/expo/web/action/DeclareAction.java

结果中行首字母"-"表示本地版本,"+"表示工作拷贝版本
4.svn info:查看工作拷贝信息
通常用来查看当前拷贝的svn地址
5.svn revert:取消本地所做修改

$svn revert quickconfig.sh
Reverted 'quickconfig.sh'

6.svn log:查看提交日志信息
7.svn add:添加一个文件
8.svn cleanup:递归清理工作拷贝
9.svn ci: 提交工作拷贝

svn ci quickconfig.sh -m "标注"

10.svn update:更新本地拷贝
遇到工作拷贝已锁定的错误时,可以用该命令清除
11.最重要的------svn help:查看帮助

更多常用命令参见肖芳城【技术】svn命令小集

设置ignore,external属性

windows下使用乌龟设置的方法参见肖芳城【技术】svn命令小集#四、乌龟的使用

1.linux下命令方式

例:设置expo目录的ignore属性,忽略target, class, .classpath, .settings, .project
步骤:
1.svn propedit svn:ignore expo
2.这是出现一个vi编辑框,在里面加入要忽略的目录文件:
target
class
.classpath
.settings
.project
3.保存退出,会显示xxx的ignore属性被设置。可以用svn st查看那下效果。

2.eclipse插件方式

安装过subeclipse插件的可以通过插件设置属性
1.再需要设置的目录上右键->Team->Set Property


 
2.在弹出的对话框中设置属性


 
3.如果已经设置过相关属性,要做修改,可以在Team->Show Property中进行编辑


 

分支合并

1.创建新分支(现在该步骤在aone上完成)

svn cp 主干地址 新分支地址 -m "标注"

2.签出新分支

svn co 新分支地址 本地目录

3.检查旧版本版本号,在旧版本目录下执行

svn log --stop-on-copy

找到创建该旧分支时的版本号xxxx,通常是最小的那个
4.进入到新分支目录下执行合并操作

svn merge -r xxxx:HEAD 旧分支地址

5.使用svn st查看合并后的状态,查看是否存在冲突
6.冲突解决后,别忘了svn ci提交合并后的代码
参见分支的创建与合并

[本地工作区] :work copy ,本地工作副本; [主项目]:引用共用模块的新项目(工程) 最新版本(HEAD revision):版本库里文件或目录的最新版本 SA :SVN服务器的管理员 PRA :单个项目库的管理员,或者是项目负责人 User :普通工作人员 WC :work copy ,本地工作副本 1. 版本控制原则 SVN(或者其他版本控制软件)只是一个版本控制的辅助工具,不可能把所有的问题都自动解决掉。尤其,对于冲突这个麻烦事儿,项目成员在项目进程中要尽量通过优化流程来解决,而不是将希望寄托于软件工具来自动解决一切问题。 建议的开发过程组织: 1. 随行就市 项目刚开始阶段,单独开发;项目稳定阶段,完整开发。项目开发初期,各个项目成员负责自己的文件夹(或者模块),与SVN服务器间的更新、提交等操作只需要针对自己负责的文件夹(或者模块)就行了,他人的文件夹(或者模块)可以不必关心;项目稳定阶段,也就是每天的变更量很小了,所有项目成员与SVN服务器的更新、提交等操作需要针对项目的所有文件夹(或者模块),各个项目成员在其本地编译时本地工作区的全部项目程序(或者资料)均为最新的版本,保证项目作为整体能够顺利运行。 2. 能躲就躲 尽量保证一份文件只有一个项目成员在编辑。举例说明:程序员A负责底层中文件 DBAccess.cs的编写,如果程序员B的工作要求他为DBAccess.cs增加两个方法,程序员B应该通知程序员A来增加而不是自己增加;如果此时A非常繁忙需要B自己增加,就需要B先更新本地的DBAccess.cs,然后开始修改,修改完成后立即提交并通知A更新本地的文件,通过缩短提交间隔来减少冲突。
介绍SVN各个目录使用规范 Svn目录使用规范 TortoiseSVN客户端工具 选择创建SVN目录结构的选项(生成trunk、branches、tags目录),如下图: 1、 trunk是主分支,是日常开发进行的地方。 2、branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。 3、tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。 注:在这需要说明下分三个目录的原因,如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy到branches上,这样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches上的稳定的版本就是发布到生产环境上的代码,如果用户使用的过程中发现有bug,则只要在branches上修改该bug,修改完bug后再编译branches上最新的代码发布到生产环境即可。tags的作用是将在branches上修改的bug的代码合并到trunk上时创建个版本标识 Trunk目录:Doc(文档库,放项目相关文档类)、sourcecede(代码库) Doc目录下按项目存放文档,以下以proj1为例做说明 Proj1----项目名 1、Controlled------组织级scm建一个名为controlled的目录,当项目某文档通过评审后,组织级scm从项目目录下找到那文档,复制到controlled目录下。(一般用不到) 2、Develop---开发文档 2.1、Design----设计文档 2.1.1、DbDesign---数据库设计文档 2.1.2、HLD---概要设计 2.1.3、InterfaceDesign---接口设计 2.1.4、ServiceDesign---服务设计 2.2、REQ---需求文档 2.3、SRS---软件需求规格说明 2.4、Test---测试文档 2.4.1、Review---可空 2.4.2、TestCese---测试用例 2.4.3、TestDoc---测试文档 2.4.4、TestEnv---测试环境说明 2.4.5、TestReport---测试报告 3、Document---项目文档 4、Management---管理文档 4.1、Meetings--会议纪要 4.2、PIM--- 4.3、Plan---计划 4.3.1、review 4.3.2、SDP---软件开发策划文档 4.3.3、SPP---软件项目策划文档 4.4、report---报告 4.4.1、Milestonereport---版本报告 4.4.2、ProjectTrackReport---项目跟踪报告 4..4.3、SCM---软件配置管理文档  4.4.4、SQA---软件质量保证计划 4.4.5、项目周报 4.5、Sow---工作说明书 4.6、Summarize---总结 4.7、Template---模板 4.8、Trainning---培训文档 打标签/分支有两种方式: 1、选中项目,就是trunk下的本地项目,右击,选中Branch/Tag,出现如下对话框。 下图中的配置完成了之后,点击OK即可完成“打标签/分支”。 2、直接在SVN上在对应的标签/分支目录下创建对应的版本文件夹,将trunk下稳定版本的代码直接copy到对应的文件目录下即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值