有关SVN版本管理
介绍说明(讨论稿)
1. 目
1. 规范标准软件Software开发流程![](/icons/98302dou2.gif)
2. 提高代码管理
规范标准性和安全性![](/icons/98302dou2.gif)
2. 参和者
所有
开发人员、软件Software项目经理(project manager)
亦适用于实习生![](/icons/98302dou2.gif)
3. 管理软件Software
1. 版本管理采用SubVersion + TortoiseSVN进行版本控制管理![](/icons/98302dou2.gif)
2. TortoiseSVN
最新版本发布于ftp://192.168.1.6/软件Software库/03_编程工具/TortoiseSVN![](/icons/98302dou2.gif)
4. 目录结构
SVN
目录结构如下所示:
192.168.1.3
├─Product_A
│ ├─branches
│ │ ├─dev_1_0
│ │ │ ├─Document
│ │ │ │ ├─1需求文档
│ │ │ │ └─2测试文档
│ │ │ └─Project
│ │ │ ├─Model_1
│ │ │ └─Model_2
│ │ └─dev_1_1
│ ├─tags
│ │ ├─dev_1_0
│ │ │ ├─Doument
│ │ │ │ ├─1立项文档
│ │ │ │ ├─2需求分析
│ │ │ │ ├─3系统设计
│ │ │ │ ├─4开发计划
│ │ │ │ ├─5测试报告
│ │ │ │ ├─6会议纪要
│ │ │ │ └─7产品实施
│ │ │ ├─Install
│ │ │ │ ├─1安装包
│ │ │ │ ├─2用户手册
│ │ │ │ └─3培训计划
│ │ │ └─Source
│ │ │ ├─Model_1
│ │ │ ├─Model_2
│ │ │ ├─Model_3
│ │ │ └─Solution
│ │ ├─dev_1_1
│ │ └─dev_1_2
│ └─trunk
│ ├─Include
│ ├─Project
│ ├─Public
│ │ ├─1会议纪要(临时)
│ │ ├─2任务分配
│ │ ├─3开发纪要
│ │ └─4测试数据
│ └─SDK
│ ├─Boost
│ │ ├─Include
│ │ └─Lib
│ └─TDE
│ ├─Include
│ └─Lib
└─Product_B
每个软件Software产品对应SVN根目录下![](/icons/98302de.gif)
个 2级子目录
每
个软件Software产品目录又主要包括如下 3个部分:(1)Tag;(2)Trunk;(3)Branches
Tag:按版本保存该软件Software产品所有
经过完整测试
历史稳定版本
相当于该软件Software产品
“里程牌”
每个版本目录主要包括 3个部分:(1)Document;(2)Install;(3)Source
Tag/Document:和该版本软件Software产品有关
文档
不包括组成模块
文档
相近主题
文档应保存在同
子目录下
子目录命名清晰明了
例如上图所示![](/icons/98302dou2.gif)
Tag/Install:经过测试
完整安装包以及安装介绍说明、用户指南、更新记录等相关用户文档
若需要其它组件
支持也应放在此目录下![](/icons/98302dou2.gif)
Tag/Source:和该软件Software产品有关
所有源代码
Source目录下主要包括两大类![](/icons/98302dou2.gif)
类是源代码
主要是每
个开发人员
本地Project目录(见
有关VC2005工程配置
介绍说明
)中
模块
每
个模块是
个目录
模块目录下包括和该模块相关
所有文档
另
类是解决方案
根据软件Software产品
区别
可以定义若干个解决方案
例如“XX信息平台”产品由 3个部分组成:采集、应用和管理器
所以可以定义 3个解决方案
分别用于生成这 3个组成部分
解决方案内
工程可以按开发人员、功能等主题定义筛选器
特别注意
是
每个解决方案必须定义子工程
“依赖关系”和“生成顺序”
工程
依赖关系也需要形成文档![](/icons/98302dou2.gif)
Trunk:目录是软件Software产品当前
主干开发版本
主要由 4部分组成:(1)Include;(2)Project;(3)Public;(4)SDK
Trunk/Include:软件Software产品开发过程中需要包含
公共头文件
不能包括开发模块输出
头文件
比如软件Software产品需要使用boost::share_ptr功能
该功能只包括头文件
则可以把boost::share_ptr使用
头文件放在Include目录里
Include目录也可以根据需要定义子目录
参考
有关VC2005工程配置
介绍说明![](/icons/98302smhr.gif)
Trunk/Project:存放所有
软件Software开发模块
区别
开发人员将自己本地工程中
Project存放于此目录中
若模块数量较多注意(1)命名清晰(2)不要重名
比如功能库可以用取名“libXXX“
平台插件可以取名“pluginXXXX”等![](/icons/98302dou2.gif)
Trunk/Public:存放软件Software开发过程中需要被所有开发人员共享
文档、代码、图表等
比如项目组会议纪要、任务分配和开发计划书、测试用例数据库
dmp导出文件等
Public中
文件应该是临时性质![](/icons/98302de.gif)
不代表最终
成果文档;最终
成果文档可以由Public中
内容演化生成![](/icons/98302dou2.gif)
Trunk/SDK:若软件Software产品是基于某开发平台
2次开发产品
则该开发平台
相关文件应放在此目录下
若使用了多个SDK
则应按区别
SDK组织 2级目录
每个 2级目录下
文件应该是独立完整![](/icons/98302de.gif)
也应包括SDK
介绍说明文档、更新记录和举例代码
Branches:目录是软件Software产品
迭代开发版本
Branches目录中应按当前迭代
版本组织目录
版本目录下
子目录组织参考Trunk目录
Branches中
内容主要由 3部分组成:(1)需求文档;(2)开发代码;(3)测试结果![](/icons/98302dou2.gif)
需求文档记录针对某
迭代版本提出
新需求
以及为了满足这些新需求该版本
哪些模块需要进行哪些大致
调整
即“需求”;具体模块
调整方案应记录在该模块
“内部文档”中
开发代码是开发人员根据需求文档对相关模块进行调整
即“响应”
测试结果记录测试人员对修改后
模块进行测试得出来
结果
即“结果”![](/icons/98302dou2.gif)
“需求-响应-结果”这是
个循环
过程
直至满足了新
需求并通过测试
这个过程如下图所示:
5. 用户和权限
SVN
用户主要分 3个层次
权限等级:(1);项目经理(project manager)(2)开发人员;(3)实习生
项目经理(project manager)具有SVN所有目录
读写权限;开发人员根据情况可以取得和项目经理(project manager)相同
权限
或者对应Project目录
权限;实习生通常对分配给自己
Model目录具有读写权限
对他所依赖
其它Model目录具有只读权限![](/icons/98302dou2.gif)
介绍说明:文档
层次是两层![](/icons/98302de.gif)
![](/icons/98302dou.gif)
层是和整体相关
文档以及“最终文档”![](/icons/98302dou.gif)
层是“模块文档”
通常实习生可以接触
只有模块文档(包括任务模块文档和依赖模块文档)![](/icons/98302dou2.gif)
6. 日常管理
提交到SVN
代码
必须是可Build通过
代码
特别是在开发初期
模块接口
功能可以简单地实现
或者干脆不实现
但是
定要保证依赖到此模块
其他开发人员可以Build通过![](/icons/98302dou2.gif)
开发人员应该形成“上班update
下班commit”
习惯
即每天开始工作
时候最好是检查
下自己依赖
模块有没有更新
结束工作
时候将自己负责
模块commit![](/icons/98302dou2.gif)
但是这样又有
个问题
在项目
开发过程中
特别是初期
模块
接口是不稳定![](/icons/98302de.gif)
这样会造成模块
用户频繁地应对接口变化
这是应该是
个“度”
问题
也从
个侧面要求开发人员先设计接口并保证在较长
时间内接口
功能、样式保持稳定![](/icons/98302dou2.gif)
Tag标签: SVN 管理
延伸阅读
![](/icons/98302de.gif)
![](/icons/98302dou2.gif)
2. 提高代码管理
![](/icons/98302de.gif)
![](/icons/98302dou2.gif)
2. 参和者
所有
开发人员、软件Software项目经理(project manager)
亦适用于实习生![](/icons/98302dou2.gif)
3. 管理软件Software
1. 版本管理采用SubVersion + TortoiseSVN进行版本控制管理![](/icons/98302dou2.gif)
2. TortoiseSVN
最新版本发布于ftp://192.168.1.6/软件Software库/03_编程工具/TortoiseSVN![](/icons/98302dou2.gif)
4. 目录结构
SVN
目录结构如下所示:
192.168.1.3
├─Product_A
│ ├─branches
│ │ ├─dev_1_0
│ │ │ ├─Document
│ │ │ │ ├─1需求文档
│ │ │ │ └─2测试文档
│ │ │ └─Project
│ │ │ ├─Model_1
│ │ │ └─Model_2
│ │ └─dev_1_1
│ ├─tags
│ │ ├─dev_1_0
│ │ │ ├─Doument
│ │ │ │ ├─1立项文档
│ │ │ │ ├─2需求分析
│ │ │ │ ├─3系统设计
│ │ │ │ ├─4开发计划
│ │ │ │ ├─5测试报告
│ │ │ │ ├─6会议纪要
│ │ │ │ └─7产品实施
│ │ │ ├─Install
│ │ │ │ ├─1安装包
│ │ │ │ ├─2用户手册
│ │ │ │ └─3培训计划
│ │ │ └─Source
│ │ │ ├─Model_1
│ │ │ ├─Model_2
│ │ │ ├─Model_3
│ │ │ └─Solution
│ │ ├─dev_1_1
│ │ └─dev_1_2
│ └─trunk
│ ├─Include
│ ├─Project
│ ├─Public
│ │ ├─1会议纪要(临时)
│ │ ├─2任务分配
│ │ ├─3开发纪要
│ │ └─4测试数据
│ └─SDK
│ ├─Boost
│ │ ├─Include
│ │ └─Lib
│ └─TDE
│ ├─Include
│ └─Lib
└─Product_B
每个软件Software产品对应SVN根目录下![](/icons/98302de.gif)
个 2级子目录
每
个软件Software产品目录又主要包括如下 3个部分:(1)Tag;(2)Trunk;(3)Branches
Tag:按版本保存该软件Software产品所有
经过完整测试
历史稳定版本
相当于该软件Software产品
“里程牌”
每个版本目录主要包括 3个部分:(1)Document;(2)Install;(3)Source
Tag/Document:和该版本软件Software产品有关
文档
不包括组成模块
文档
相近主题
文档应保存在同
子目录下
子目录命名清晰明了
例如上图所示![](/icons/98302dou2.gif)
Tag/Install:经过测试
完整安装包以及安装介绍说明、用户指南、更新记录等相关用户文档
若需要其它组件
支持也应放在此目录下![](/icons/98302dou2.gif)
Tag/Source:和该软件Software产品有关
所有源代码
Source目录下主要包括两大类![](/icons/98302dou2.gif)
类是源代码
主要是每
个开发人员
本地Project目录(见
有关VC2005工程配置
介绍说明
)中
模块
每
个模块是
个目录
模块目录下包括和该模块相关
所有文档
另
类是解决方案
根据软件Software产品
区别
可以定义若干个解决方案
例如“XX信息平台”产品由 3个部分组成:采集、应用和管理器
所以可以定义 3个解决方案
分别用于生成这 3个组成部分
解决方案内
工程可以按开发人员、功能等主题定义筛选器
特别注意
是
每个解决方案必须定义子工程
“依赖关系”和“生成顺序”
工程
依赖关系也需要形成文档![](/icons/98302dou2.gif)
Trunk:目录是软件Software产品当前
主干开发版本
主要由 4部分组成:(1)Include;(2)Project;(3)Public;(4)SDK
Trunk/Include:软件Software产品开发过程中需要包含
公共头文件
不能包括开发模块输出
头文件
比如软件Software产品需要使用boost::share_ptr功能
该功能只包括头文件
则可以把boost::share_ptr使用
头文件放在Include目录里
Include目录也可以根据需要定义子目录
参考
有关VC2005工程配置
介绍说明![](/icons/98302smhr.gif)
Trunk/Project:存放所有
软件Software开发模块
区别
开发人员将自己本地工程中
Project存放于此目录中
若模块数量较多注意(1)命名清晰(2)不要重名
比如功能库可以用取名“libXXX“
平台插件可以取名“pluginXXXX”等![](/icons/98302dou2.gif)
Trunk/Public:存放软件Software开发过程中需要被所有开发人员共享
文档、代码、图表等
比如项目组会议纪要、任务分配和开发计划书、测试用例数据库
dmp导出文件等
Public中
文件应该是临时性质![](/icons/98302de.gif)
不代表最终
成果文档;最终
成果文档可以由Public中
内容演化生成![](/icons/98302dou2.gif)
Trunk/SDK:若软件Software产品是基于某开发平台
2次开发产品
则该开发平台
相关文件应放在此目录下
若使用了多个SDK
则应按区别
SDK组织 2级目录
每个 2级目录下
文件应该是独立完整![](/icons/98302de.gif)
也应包括SDK
介绍说明文档、更新记录和举例代码
Branches:目录是软件Software产品
迭代开发版本
Branches目录中应按当前迭代
版本组织目录
版本目录下
子目录组织参考Trunk目录
Branches中
内容主要由 3部分组成:(1)需求文档;(2)开发代码;(3)测试结果![](/icons/98302dou2.gif)
需求文档记录针对某
迭代版本提出
新需求
以及为了满足这些新需求该版本
哪些模块需要进行哪些大致
调整
即“需求”;具体模块
调整方案应记录在该模块
“内部文档”中
开发代码是开发人员根据需求文档对相关模块进行调整
即“响应”
测试结果记录测试人员对修改后
模块进行测试得出来
结果
即“结果”![](/icons/98302dou2.gif)
“需求-响应-结果”这是
个循环
过程
直至满足了新
需求并通过测试
这个过程如下图所示:
5. 用户和权限
SVN
用户主要分 3个层次
权限等级:(1);项目经理(project manager)(2)开发人员;(3)实习生
项目经理(project manager)具有SVN所有目录
读写权限;开发人员根据情况可以取得和项目经理(project manager)相同
权限
或者对应Project目录
权限;实习生通常对分配给自己
Model目录具有读写权限
对他所依赖
其它Model目录具有只读权限![](/icons/98302dou2.gif)
介绍说明:文档
层次是两层![](/icons/98302de.gif)
![](/icons/98302dou.gif)
层是和整体相关
文档以及“最终文档”![](/icons/98302dou.gif)
层是“模块文档”
通常实习生可以接触
只有模块文档(包括任务模块文档和依赖模块文档)![](/icons/98302dou2.gif)
6. 日常管理
提交到SVN
代码
必须是可Build通过
代码
特别是在开发初期
模块接口
功能可以简单地实现
或者干脆不实现
但是
定要保证依赖到此模块
其他开发人员可以Build通过![](/icons/98302dou2.gif)
开发人员应该形成“上班update
下班commit”
习惯
即每天开始工作
时候最好是检查
下自己依赖
模块有没有更新
结束工作
时候将自己负责
模块commit![](/icons/98302dou2.gif)
但是这样又有
个问题
在项目
开发过程中
特别是初期
模块
接口是不稳定![](/icons/98302de.gif)
这样会造成模块
用户频繁地应对接口变化
这是应该是
个“度”
问题
也从
个侧面要求开发人员先设计接口并保证在较长
时间内接口
功能、样式保持稳定![](/icons/98302dou2.gif)
Tag标签: SVN 管理
延伸阅读
![](/icons/98302dou2.gif)
2. TortoiseSVN
![](/icons/98302de.gif)
![](/icons/98302dou2.gif)
4. 目录结构
SVN
目录结构如下所示:
192.168.1.3
├─Product_A
│ ├─branches
│ │ ├─dev_1_0
│ │ │ ├─Document
│ │ │ │ ├─1需求文档
│ │ │ │ └─2测试文档
│ │ │ └─Project
│ │ │ ├─Model_1
│ │ │ └─Model_2
│ │ └─dev_1_1
│ ├─tags
│ │ ├─dev_1_0
│ │ │ ├─Doument
│ │ │ │ ├─1立项文档
│ │ │ │ ├─2需求分析
│ │ │ │ ├─3系统设计
│ │ │ │ ├─4开发计划
│ │ │ │ ├─5测试报告
│ │ │ │ ├─6会议纪要
│ │ │ │ └─7产品实施
│ │ │ ├─Install
│ │ │ │ ├─1安装包
│ │ │ │ ├─2用户手册
│ │ │ │ └─3培训计划
│ │ │ └─Source
│ │ │ ├─Model_1
│ │ │ ├─Model_2
│ │ │ ├─Model_3
│ │ │ └─Solution
│ │ ├─dev_1_1
│ │ └─dev_1_2
│ └─trunk
│ ├─Include
│ ├─Project
│ ├─Public
│ │ ├─1会议纪要(临时)
│ │ ├─2任务分配
│ │ ├─3开发纪要
│ │ └─4测试数据
│ └─SDK
│ ├─Boost
│ │ ├─Include
│ │ └─Lib
│ └─TDE
│ ├─Include
│ └─Lib
└─Product_B
每个软件Software产品对应SVN根目录下![](/icons/98302de.gif)
个 2级子目录
每
个软件Software产品目录又主要包括如下 3个部分:(1)Tag;(2)Trunk;(3)Branches
Tag:按版本保存该软件Software产品所有
经过完整测试
历史稳定版本
相当于该软件Software产品
“里程牌”
每个版本目录主要包括 3个部分:(1)Document;(2)Install;(3)Source
Tag/Document:和该版本软件Software产品有关
文档
不包括组成模块
文档
相近主题
文档应保存在同
子目录下
子目录命名清晰明了
例如上图所示![](/icons/98302dou2.gif)
Tag/Install:经过测试
完整安装包以及安装介绍说明、用户指南、更新记录等相关用户文档
若需要其它组件
支持也应放在此目录下![](/icons/98302dou2.gif)
Tag/Source:和该软件Software产品有关
所有源代码
Source目录下主要包括两大类![](/icons/98302dou2.gif)
类是源代码
主要是每
个开发人员
本地Project目录(见
有关VC2005工程配置
介绍说明
)中
模块
每
个模块是
个目录
模块目录下包括和该模块相关
所有文档
另
类是解决方案
根据软件Software产品
区别
可以定义若干个解决方案
例如“XX信息平台”产品由 3个部分组成:采集、应用和管理器
所以可以定义 3个解决方案
分别用于生成这 3个组成部分
解决方案内
工程可以按开发人员、功能等主题定义筛选器
特别注意
是
每个解决方案必须定义子工程
“依赖关系”和“生成顺序”
工程
依赖关系也需要形成文档![](/icons/98302dou2.gif)
Trunk:目录是软件Software产品当前
主干开发版本
主要由 4部分组成:(1)Include;(2)Project;(3)Public;(4)SDK
Trunk/Include:软件Software产品开发过程中需要包含
公共头文件
不能包括开发模块输出
头文件
比如软件Software产品需要使用boost::share_ptr功能
该功能只包括头文件
则可以把boost::share_ptr使用
头文件放在Include目录里
Include目录也可以根据需要定义子目录
参考
有关VC2005工程配置
介绍说明![](/icons/98302smhr.gif)
Trunk/Project:存放所有
软件Software开发模块
区别
开发人员将自己本地工程中
Project存放于此目录中
若模块数量较多注意(1)命名清晰(2)不要重名
比如功能库可以用取名“libXXX“
平台插件可以取名“pluginXXXX”等![](/icons/98302dou2.gif)
Trunk/Public:存放软件Software开发过程中需要被所有开发人员共享
文档、代码、图表等
比如项目组会议纪要、任务分配和开发计划书、测试用例数据库
dmp导出文件等
Public中
文件应该是临时性质![](/icons/98302de.gif)
不代表最终
成果文档;最终
成果文档可以由Public中
内容演化生成![](/icons/98302dou2.gif)
Trunk/SDK:若软件Software产品是基于某开发平台
2次开发产品
则该开发平台
相关文件应放在此目录下
若使用了多个SDK
则应按区别
SDK组织 2级目录
每个 2级目录下
文件应该是独立完整![](/icons/98302de.gif)
也应包括SDK
介绍说明文档、更新记录和举例代码
Branches:目录是软件Software产品
迭代开发版本
Branches目录中应按当前迭代
版本组织目录
版本目录下
子目录组织参考Trunk目录
Branches中
内容主要由 3部分组成:(1)需求文档;(2)开发代码;(3)测试结果![](/icons/98302dou2.gif)
需求文档记录针对某
迭代版本提出
新需求
以及为了满足这些新需求该版本
哪些模块需要进行哪些大致
调整
即“需求”;具体模块
调整方案应记录在该模块
“内部文档”中
开发代码是开发人员根据需求文档对相关模块进行调整
即“响应”
测试结果记录测试人员对修改后
模块进行测试得出来
结果
即“结果”![](/icons/98302dou2.gif)
“需求-响应-结果”这是
个循环
过程
直至满足了新
需求并通过测试
这个过程如下图所示:
5. 用户和权限
SVN
用户主要分 3个层次
权限等级:(1);项目经理(project manager)(2)开发人员;(3)实习生
项目经理(project manager)具有SVN所有目录
读写权限;开发人员根据情况可以取得和项目经理(project manager)相同
权限
或者对应Project目录
权限;实习生通常对分配给自己
Model目录具有读写权限
对他所依赖
其它Model目录具有只读权限![](/icons/98302dou2.gif)
介绍说明:文档
层次是两层![](/icons/98302de.gif)
![](/icons/98302dou.gif)
层是和整体相关
文档以及“最终文档”![](/icons/98302dou.gif)
层是“模块文档”
通常实习生可以接触
只有模块文档(包括任务模块文档和依赖模块文档)![](/icons/98302dou2.gif)
6. 日常管理
提交到SVN
代码
必须是可Build通过
代码
特别是在开发初期
模块接口
功能可以简单地实现
或者干脆不实现
但是
定要保证依赖到此模块
其他开发人员可以Build通过![](/icons/98302dou2.gif)
开发人员应该形成“上班update
下班commit”
习惯
即每天开始工作
时候最好是检查
下自己依赖
模块有没有更新
结束工作
时候将自己负责
模块commit![](/icons/98302dou2.gif)
但是这样又有
个问题
在项目
开发过程中
特别是初期
模块
接口是不稳定![](/icons/98302de.gif)
这样会造成模块
用户频繁地应对接口变化
这是应该是
个“度”
问题
也从
个侧面要求开发人员先设计接口并保证在较长
时间内接口
功能、样式保持稳定![](/icons/98302dou2.gif)
Tag标签: SVN 管理
延伸阅读
![](/icons/98302de.gif)
![](/icons/98302de.gif)
![](/icons/98302dou2.gif)
![](/icons/98302de.gif)
![](/icons/98302de.gif)
![](/icons/98302dou.gif)
![](/icons/98302de.gif)
![](/icons/98302de.gif)
![](/icons/98302dou.gif)
![](/icons/98302de.gif)
![](/icons/98302dou2.gif)
介绍说明:文档
![](/icons/98302de.gif)
![](/icons/98302de.gif)
![](/icons/98302dou.gif)
![](/icons/98302yi.gif)
![](/icons/98302de.gif)
![](/icons/98302dou.gif)
![](/icons/98302yi.gif)
![](/icons/98302dou.gif)
![](/icons/98302de.gif)
![](/icons/98302dou2.gif)
最新评论