我的TDD实践---SVN架设篇
我的TDD实践---SVN架设篇
“我的TDD实践”系列之SVN架设
写在前面:
我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精的目的。
TDD实践系列文章:
1.TDD概念篇
2.CI持续集成
3.SVN架设篇
4.NUint测试框架
5.Mock模拟框架
6.Inject注入框架
7.TestCoverage代码覆盖率工具
8.UMLTool建模工具
9.SandCastle构建文档
1. 介绍:
本文主要是介绍Source control system(源文件管理系统),这是CI的基础,当然你也完全可以用它只做数据存储,并行开发,源代码控制等等,这里就不详细介绍了,网上有很多资料描述SVN以及源代码管理,TFS也是一个不错的选择。
这里我选择了Subversion+TortoiseSVN的选择,因为开源以及应用广泛,免费。
通常所说的SVN其实是分为2个部分的:
服务端Server:Subversion
客户端Client:TortoiseSVN (广泛引用,功能强大,操作简单)
a) 意义:
i. 提供获取历史版本功能,恢复错误版本之前的状态。或比较版本之间的不同。
ii. 锁定正在编辑的文件,访问控制锁定,防止提交冲突。(不同产品,实现功能略有不同。)
iii. 良好的版本管理、版本分发。
iv. 提供文档,工具,测试,源代码的一体化管理。
b) 权衡

说明:Centralized集中式管理 与 Distributed分布式管理(要是开源的建议可以分布式管理,反之集中式管理)
Transactional支持事务性与nontransaction不支持事务性(是否支持还原代码版本,很重要。曾经的惨痛教训告诉我,即使能回滚的情况下已经很闹心何况不能还原数据。)
File blocking文件锁or non-file blocking非文件锁定方式。(文件锁定方式属于乐观锁,即检出时(checkout)有权限的人都可以获取,但是提交时(checkin)会进行版本控制,简而言之,如果你和某人同时改写了同一个文件,一般情况下谁先提交到服务器上,第二个人就无法提交并报告文件冲突。)
2. 环境搭建
Server :Subversion
Subversion官网 (建议下载1.6.x)
Client:TortiseSVN
目前,官网只有1.8.x 64位版本,请找到适合您的客户端。
本文中建议配合Subversion请使用TortoiseSVN-1.6.8.19260-win32-svn-1.6.11版本
步骤Steps:
- 点击Subversion安装包,并将程序安装到“指定目录”(默认是C盘下),默认安装后重启。
- 安装完成,测试是否安装成功。
打开CMD程序,输入 svnserve --help。没有提示错误就是安装成功。
3.SVN服务端配置:
a) 在CMD中输入:sc create SVNService binpath= "C:\Program Files\Subversion\bin\svnserve.exe --listen-port 3691 --service -r D:\SVN\Server\RepositoryRoot" displayname= "SVNService" start= auto depend= Tcpip
其中C:\Program Files\Subversion\bin\svnserve.exe是安装程序的路径;D:\SVN\Server\RepositoryRoot是目标路径,在此之前要提前创建好该目录下的RepositoryRoot文件夹。
啰嗦一句,win7下要管理员权限,没有权限会返回“失败5:拒绝访问”。
也可以用批处理的方式注入cmd命令。

成功后会返回: CreatServer 成功。
b) 启动SVNService服务:(管理员权限)cmd 执行 net start SVNService (SVNService是上面定义的服务名称)
c) 使用SVN集成命令(或TSVN创建),cmd-> input:svnadmin create D:\SVN\Server\RepositoryRoot(此路径必须是服务开启的路径)。然后你会在此目录下看到生成了很多文件,具体不一一介绍了,在这个文件夹中创建tags,trunk,branches文件夹。

d) 配置Svn服务端:
在conf文件夹下,
Svnserve文件修改如下:
anon-access = none
auth-access = write
password-db = passwd
realm = My First Repository
passwd文件修改如下:
[users]
qq=229063661
至此,服务端配置基本完成,更多的设置文件中有说明,或者去访问SVN中文站,这里笔者要强调一下的是:SVN服务端和客户端的版本要一致,不然可能会出现莫名其妙的错误。更有意思的是,您可以不建立SVN服务端而直接联接Git的开源程序,但目前只支持只读。
4.SVN客户端配置:
a) 安装TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.exe。基本都是默认设置,安装完之后可以更改语言。
b) 完成本地磁盘和Svn服务端磁盘的映射。
i. 在本地文件夹下右键---checkout---按照图片上的设置(注意我是本地所以用localhost,IP可以跨机器访问;我更改了端口3691,所以要显示指明一下,要不然会出错。),最后输入passwd中的用户名和密码即可。(qq:229063661)

至此,SVN客户端也配置完毕了,SVN的使用方法这里就不举例了,网上资料非常丰富,而且大家也可以查看T-SVN的操作手册,或者访问SVN中文站获得更多信息。
这里罗列一下相关资源:
版权声明:凡是没有标注[转载]的,在引用文章时,均要加上本博客地址http://www.cnblogs.com/cuiyansong/。
我的TDD实践---SVN架设篇的更多相关文章
- 我的TDD实践---TDD概念篇
“我的TDD实践”系列之TDD概念篇 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...
- 我的TDD实践---UnitTest单元测试
我的TDD实践---UnitTest单元测试 “我的TDD实践”系列之UnitTest单元测试 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则 ...
- 我的TDD实践---CI持续集成
“我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...
- LDA工程实践之算法篇之(一)算法实现正确性验证(转)
研究生二年级实习(2010年5月)开始,一直跟着王益(yiwang)和靳志辉(rickjin)学习LDA,包括对算法的理解.并行化和应用等等.毕业后进入了腾讯公司,也一直在从事相关工作,后边还在yiw ...
- 函数形参为基类数组,实参为继承类数组,下存在的问题------c++程序设计原理与实践(进阶篇)
示例: #include<iostream> using namespace std; class A { public: int a; int b; A(int aa=1, int bb ...
- 函数返回值string与返回值bool区别------c++程序设计原理与实践(进阶篇)
为什么find_from_addr()和find_subject()如此不同?比如,find_from_addr()返回bool值,而find_subject()返回string.原因在于我们想说明: ...
- (c++11)随机数------c++程序设计原理与实践(进阶篇)
随机数既是一个实用工具,也是一个数学问题,它高度复杂,这与它在现实世界中的重要性是相匹配的.在此我们只讨论随机数哦最基本的内容,这些内容可用于简单的测试和仿真.在<random>中,标准库 ...
- 实现求解线性方程(矩阵、高斯消去法)------c++程序设计原理与实践(进阶篇)
步骤: 其中A是一个n*n的系数方阵 向量x和b分别是未知数和常量向量: 这个系统可能有0个.1个或者无穷多个解,这取决于系数矩阵A和向量b.求解线性系统的方法有很多,这里使用一种经典的方法——高斯消 ...
- 数值限制------c++程序设计原理与实践(进阶篇)
每种c++的实现都在<limits>.<climits>.<limits.h>和<float.h>中指明了内置类型的属性,因此程序员可以利用这些属性来检 ...
随机推荐
- Qt 如何处理拖放应用程序参数时,中国
你用 Qt 我们开发的应用程序.用户拖放文件到您的 exe 在.启动应用程序,在这个时候, main() 功能参数可以接收中国.如何正确处理它?非常easy,码如下面: QTextCodec *cod ...
- jQuery选中该复选框来实现/全部取消/未选定/获得的选定值
<!DOCTYPE html> <html> <head> <script type="text/javascript" src=&quo ...
- IntelliJ IDEA —— Android开发的另一个选择
IntelliJ IDEA —— Android开发的另一个选择 很早就听过Eclipse的大名,但在我初学Java的时候,一位前辈推荐的IDE却是IntelliJ IDEA.因为之前用过JetBra ...
- Modernizr
Modernizr 目录 概述 CSS的新增class JavaScript侦测 加载器 参考链接 概述 随着HTML5和CSS3加入越来越多的模块,检查各种浏览器是否支持这些模块,成了一大难题.Mo ...
- Linux C语言操作MySQL
原文:Linux C语言操作MySQL 1.MySQL数据库简介 MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源.MySQL有以下特性: (1) 使用C和C++编写, ...
- selenium2入门 用Yaml文件进行元素管理 (五)
比如界面有一个按钮,id号是test.如果进行对象化的话,就是test.click就可以了.不用每次都要去创建test对象.如果id号变了,我们也只需要改一下test的名称就行了. 使用Yaml需要用 ...
- sql 中如何取出指定行: Row_Number
原文:sql 中如何取出指定行: Row_Number ROW_NUMBER (Transact-SQL) USE AdventureWorks2008R2;GOWITH OrderedOrders ...
- 学习使用简单的php
配置文件在:/etc/php5/$中,不同的模式含有自己的php.ini配置文件.php可以运行于多种模式:cgi.fastcgi.cli.web模块模式等4种: 我现在使用的模式是cli模式,这里进 ...
- leetcode第四题--Add Two Numbers
Problem: You are given two linked lists representing two non-negative numbers. The digits are stored ...
- D3D 光照和材料 小样例
1.实现一个旋转的圆柱体,体现d3d光照效果 2.程序实现 #pragma once #pragma comment(lib,"winmm.lib") #pragma commen ...