【转】协同开发中SVN使用规范试用
转自:http://www.cnblogs.com/BraveCheng/archive/2012/07/02/2573617.html
协同开发中SVN使用规范试用
目标,要求
本次svn提交规范主要针对当前项目中出现的svn管理难,开发流程控制难掌控,项目进度记录不准确等问题而提出。要求每个角色都要进行规范化svn作业。
目录结构与开发模式
分散式分支开发模式原理
Svn://project/
+trunk/(主开发目录)
+branches/(分支开发目录)
+dev_1.0_function1(功能性分支1)
+dev_2.0_function2(功能性分支2)
…
+tags(存档目录,不允许修改)
a) 1.0的开发,做一个dev_1.0的功能性分支
Svn://project/
+trunk/(不承担开发任务)
+branches/
+dev_1.0_function1
+tags
b) 1.0功能开发完成,合并分支到主干
Svn://project/
+trunk/(merge from branch dev_1.0_function1)
+branches/
+dev_1.0_function1(开发任务结束,冻结)
+tags
c) 测试完成,根据主干做一次1.0的tag
Svn://project/
+trunk/(merge from branch dev_1.0_function1)
+branches/
+dev_1.0_function1(开发任务结束,冻结)
+tags
+tag_release_1.0(copy from trunk)
d) 1.0版本结束,做下一个版本的开发2.0
Svn://project/
+trunk/(merge from branch dev_1.0_function1)
+branches/
+dev_1.0_function1(开发任务结束,冻结)
+dev_2.0_function2(2.0的开发)
+tags
+tag_release_1.0(copy from trunk)
e) 1.0版本出现bug,直接在dev_1.0版本上修复
Svn://project/
+trunk/(merge from branch dev_1.0_function1)
+branches/
+dev_1.0_function1(bugfix)
+dev_2.0_function2(2.0的开发)
+tags
+tag_release_1.0(copy from trunk)
f) 选择性的进行代码合并
使用规范
命名规范
分支名称采用固定名称与下划线结合方式进行功能性分支描述如:dev_1.0_crm。
存档名称统一采用tag_release_版本的方式。
提交规范
一、 提交之前先更新
在每次提交文件的时候,先进行必要的更新操作,因为,有可能在你修改文件的期间,别人也修改了同样的文件,那么本次的提交很可能会失败。
二、 保持原子性的提交
每次提交的时间尽可能的短,如当你修改了UI界面,完成了功能小细节,确认了bug完善就提交代码。
三、 不要提交本地配置文件,自动生成的文件,自己不明白的文件
本地环境因人而异,因此就有了不同的配置文件,缓存生成文件等,在提交的时候,尽可能检查提交的内容是否是包含了类似不必要的文件。
注释规范
每次提交必须书写明晰的标注
在项目中,如果没有注释,会导致管理人员不能清晰的把握每次的项目提交的概要,bug管理与文件不对称,难以掌控项目的进展等问题,因此建议填写注释,同时不能填写一些无效,无用的信息。填写好的注释应该是能概要的描述所提交的文件的基本功能的信息,也建议使用下面的规范。
注释规范写法,提交前加注释标签
- Todo: 任务清单
对于需求性的功能使用todo前缀标签,如加入经纪公司模块,使用类似以下语句:Todo: 增加经纪公司模块
- Bugfix:: bug修复
对于系统bug,等信息提交前加上bugfix标签,如修复待遇显示不正确:Bugfix: 修复期望工资待遇显示错误bug
- Junk: 零碎碎片
其他的一些无效的信息修改,如静态资源的压缩:Junk: css,js文件压缩
效果图:
【转】协同开发中SVN使用规范试用的更多相关文章
- 协同开发中SVN的使用建议
协同开发中SVN的使用建议 1. 注意个人账户密码安全 各员工需牢记各自的账户和密码,不得向他人透漏,严禁使用他人账户进行SVN各项操作(主要考虑每个SVN账号的使用者的权限范围问题).如有忘记,请 ...
- 更新协同开发工具SVN的链接的服务器地址
公司内的协同开发工具使用的SVN,因为换了个服务器需要重置SVN地址,一下子有点措手不及. 研究了下SVN的操作菜单,发现有一个功能“重新定位”,应该就是我要找的了,试了一下果真没错,记录下 第一步: ...
- web前端开发中的命名规范
(一)主体 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中: ...
- SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)
SVN二次开发 ——让SVN.TSVN(TortoiseSVN)支持windows的访问控制模型.NTFS ADS (可选数据流.NTFS的安全属性) SVN secondary developmen ...
- 华为如何实现基于Git的跨地域协同开发
跨地域开发的需求其实由来已久,在IT/互联网发展的早期就已存在,只不过限于当时网络环境的因素,无法在线上有效的完成协同工作,所以没法实际开展.而随着近十年网络的快速发展,跨地域协同开发线变得可能而且越 ...
- 【SVN技巧】如何协同开发LabVIEW代码 1
前言 在我们工作中,必然会遇到代码的多个版本问题,也必然会遇到版本控制问题.如果所在的公司具有良好的项目管理体系或者软件管理体系,那么其版本控制应该有严格的使用规范,如果没有则作为一个上进好青年也应当 ...
- 2014-07-25 改进自定义菜单与使用SVN进行协同开发
今天是在吾索实习的第13天.今天没有做过多的代码设计,只进行了一些代码的分析与进一步优化.其中,发现创建自定义菜单的关键代码书写可分为两部分: JSON格式的字符串在.net中的语法书写: strin ...
- ios 开发中使用SVN管理代码
今天新公司需要使用SVN管理代码,就在网上查看相关的资料,现在把相关用法记录下来: 1.使用的是这个软件Cornerston 网上有很多相应的下载链接,可以去查看 2.下载安装之后,首先需要添加仓库r ...
- iOS开发(OC)中的命名规范
开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...
随机推荐
- Java Scanner 类
下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner -是java类库的一个基础类,一个可以使用正则表达式来解析基本类型 ...
- centos搭建ftp服务器
申请个京东云服务用着.上传文件想搭建个ftp服务.遇到个坑记录一下: 这里就简单的使用yum安装 ftp服务: vsftpd 全称 very secure ftp deamon (非常安全的ftp ...
- String Successor zoj 3490
链接 [https://vjudge.net/contest/294259#problem/D] 题意 就是给你一个字符串,要进行n次操作 让你输出每次的字符串 操作规则: 1.如果有数字或者字母就忽 ...
- HashMap 与 Hashtable 的区别
Hashtable t 小写 二者用法一致 都实现Map接口 1.HashMap 的键值可以为null,而Hashtable不允许("null" 不是 null 前者是字符串 ...
- openstack搭建之-glance配置(9)
一. base节点配置 #设置数据库,创建glance数据库,并设置权限 mysql -u root -proot CREATE DATABASE glance; GRANT ALL PRIVILEG ...
- git命令行 整理(一位大神给我的私藏)
Evernote Export Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出 ...
- 一些有意思的Linux命令
1.输出你最常用的十条命令 history|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort - ...
- x86汇编语言实践(1)
0 写在前面 为了更深入的了解程序的实现原理,近期我学习了IBM-PC相关原理,并手工编写了一些x86汇编程序. 在2017年的计算机组成原理中,曾对MIPS体系结构及其汇编语言有过一定的了解,考虑到 ...
- DP擎天
DP! 黄题: 洛谷P2101 命运石之门的选择 假装是DP(分治 + ST表) CF 982C Cut 'em all! 树形贪心 洛谷P1020 导弹拦截 单调队列水题 绿题: 洛谷P1594 护 ...
- go interface接口
一:接口概要 接口是一种重要的类型,他是一组确定的方法集合. 一个接口变量可以存储任何实现了接口方法的具体值.一个重要的例子就是io.Reader和io.Writer type Reader inte ...