(1)svn的安装
1. 下载软件:Setup-Subversion-1.7.5.msi,安装就很容易了,一路NEXT
2. 把SVN的bin文件夹路径添加到环境变量中
把svn安装目录下的bin路径(D:\Program\Subversion\bin)添加到环境变量中。
在命令行窗口(cmd打开),输入svn –version,如果能显示版本信息,说明已经安装成功了。
(2)服务器的创建
1、创建一个根目录,这个根目录用来存储所有的svn的工厂信息(每一个工厂等于一个项目)
2、启动svn svnserve -d -r E:/svn/root
该命令在Linux下运行后就可以把命令行窗口关闭了,SVN服务器会在后台自动运行。
但对于window而言,在架设SVN服务器的时候,这个命令行窗口不能关闭,因为该命令不支持windows后台运行。所以需要将其添加到window的服务中,命令如下:
C:\Users\huangyineng>sc create SVNServer binPath= "D:\Program\Subversion\bin\svnserve --service -r E:/svn/root"
注:
1. binPath=后面要有个空格
2. 启动服务后,svn的端口是3690
C:\Users\huangyineng>netstat -na
活动连接
协议 本地地址 外部地址 状态
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3690 0.0.0.0:0 LISTENING
……
(3)TortoiseSVN的下载与安装
TortoiseSVN 是Subversion 版本控制系统的一个免费开源客户端,现在最新版是1.7.7,下载地址:http://tortoisesvn.net/downloads.html
我下载的文件是TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi
安装就一路NEXT就可以了,比较简单,在这里就不作介绍。安装好之后,右击,如果有下图显示表示安装成功了。
(4)开发流程
(4.1)配置管理人员
1、创建工厂
C:\Users\huangyineng>svnadmin create e:/svn/root/student
2、配置权限
权限控制的文件在E:\svn\root\student\conf目录下。
a) 修改svnserve.conf开启权限
把# anon-access = read、# auth-access = write、# password-db = passwd、# authz-db = authz前面的注释(#)去掉,并把anon-access = read改anon-access = none。
anon-access = none表示匿名用户不用访问
auth-access = write表示授受用户有读的权限
password-db = passwd表示授受用户的密码记录在passwd文件中
authz-db = authz表示授受用户的信息记录在authz文件中。
b) 修改passwd添加用户密码
[users]
huangyineng = 123456
naxsu = 123
c) 修改authz配置权限
[aliases]
[groups]
g_admin = huangyineng
g_dev = huangyineng,naxsu
[/]
huangyineng = rw
naxsu = r
注:aliases给用户起别名,在这里我们就不设置了;groups设置组,在这里设置了管理员组和开发组;[/]设置了根目录下用户的权限,当然可以设置根目录下的任意子目录。
3、由项目经理创建项目并且提交到svn工厂中
a) 安装TortoiseSVN-1.7.6或者Eclipse中的插件
b) 把项目导入到SVN工厂中,对着项目“右击”-->“TortoiseSVN”-->“Import…”-->
要输入项目路径(svn://localhost/student),且要养成一个写备注的良好习惯
à提示要身份认证,输入用户名和密码即可(要用权限用户)
以上就正常的完成了导入
(4.2)开发人员
a) 进入你想要存入项目的目录,“右击”-->“SVN Checkout…”
b) 修改完后,先“右击”-->“SVN Update”-->“SVN Commit”
注:
为了避免别人已修改过,所以在提交之前,先Update
如果版本出现冲突,只能人工进行检查和合并,然后把冲突的文件删除再提交
项目经理分配任务的时候需要独立的来考虑(为不同的开发人员分配不同的模块进行开发,这样尽可能的避免冲突)
c) 其他开发人员可以通过-->update更新svn仓库中的信息