版本控制好工具有SVN、CVS、VSS等多种,他们的优劣在此不说明,请网络参阅。
SVN支持多种平台,此文仅描述Windows平台下使用说明。
SVN客户包含客户端和服务端。Windows平台下客户端使用TortoiseSVN,而服务端可使用SubVersion或者VisualSVN Server。
两者区别如下:
- SubVersion服务需要封装SVN Serve为Windows Service,才能自启动;
- SubVersion控制权限,需要通过修改配置文件;
- SubVersion想通过浏览器访问,需要安装配置Apache。
而VisualSVN Serve集成了Subversion和Apache,省去了以上所有的麻烦。安装的时候SVN Server已经封装为windws service,Apache服务器的配置也只是在图像界面上,指定认证方式、访问端口等简单操作;另外,用户权限的管理也是通过图像界面来配置。
本文描述内容针对SubVersion使用。因为要的就是原始、整洁和稳定,也更接近Linux使用方式。
一、 下载安装
1. 下载
- 服务器:Setup-Subversion-1.8.0-1.msi
- 客户端:TortoiseSVN-1.8.5.25224-win32-svn-1.8.8.msi
- Apache服务:httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
注意,此3个软件版本有可能不匹配。
2. 安装
一般情况下,Subversion服务器仅供局域网/本地使用,所以不需要Apache服务器。如需Apache服务器,可以参考《Apache服务安装及配置》。如出现无法安装msi文件,或许需要下载安装新windows installer。
1> 服务器安装
- 双击Setup-Subversion-1.8.0-1.msi,一直下一步,完成svn服务端软件安装。
- 配置系统环境变量Path新增D:\Program Files\Subversion\bin(注意本文安装路径是D:\Program Files\Subversion)。
- 进入DOS界面,输入svnserve.exe –version。以验证查看服务器软件安装是否成功。
2> 客户端安装,双击TortoiseSVN-1.8.5.25224-win32-svn-1.8.8.msi,一直下一步,完成svn客户端软件安装。本文安装路径D:\Program Files\TortoiseSVN。
3> 不习惯TortoiseSVN英文菜单界面的朋友,可以下载TortoiseSVN中文语言包安装,如LanguagePack_1.8.4.24972-win32-zh_CN.msi,安装完成后,在TotoriseSVNà SettingsàGeneralàLanguage选择“中文”。
二、 创建版本库
首先创建一个空文件夹,如D:\svnRoot,作为所有版本库的根目录,便于集中管理所有版本库。有两种方式可以创建版本库:
第一种:TortoiseSVN方式创建。在D:\svnRoot目录下,新建一个空文件夹,如D:\svnRoot\repose1,单击鼠标右键,选择“TortoiseSVN”à“Create repository here”完成创建
第二种:SubVersion方式创建。在开始菜单运行cmd进入DOS界面,输入
svnadmin create D:\svnRoot\repose2 (创建版本库)
完成版本库创建。
三、 启动SVN服务
在服务器DOS界面,输入
svnserve.exe --daemon --root D:\svnRoot (启动服务)
可以写成svnserve.exe -d -r D:\svnRoot。--daemon,表示svnserve将以守护进程方式运行,当关闭当前命令行窗口就会把svnserve stop了。使用SVN服务,命令行窗口需要服务器一直开着。我们可以通过svnserve -h来查看相关操作选项。
四、 配置用户和权限
- 打开版本库D:\svnRoot\repose1\conf\svnserve.conf文件,把里面的被# 注释的password-db = passwd,去掉前面的 # 注释符,并且前面不能有空格。这样将会使用confpasswd文件作为密码数据库。
- 修改密码数据库passwd,添加user:
[users]
admin = 123 (用户名 = 密码,一行一个account)
( 无需重启服务器,即可使用!如果提示“认证失败”,请检查此步骤的配置)
此部分进一步详情可参考《SVN用户和权限配置》。
五、 访问版本库
接下来可以通过TortoiseSVN -> Repo-browser来查看版本库:在点击那个菜单项后弹出的URL对话框中输入
svn://localhost/repos1 (访问版本库)
这样就可以看见repos1版本库的目录结构了。其他电脑访问需要把localhost改成本机IP地址,其他电脑只需要安装TortoiseSVN客户端即可。
注意:在此版本,本人测试先“svnserve.exe --daemon --root D:\svnRoot”启动,再访问“svn://localhost/repos1”,提示无法访问。而是启动“D:\svnRoot\repose1”,再“svn://localhost”访问repose1版本库。
六、 开始新的项目
- 添加新的文件到版本库Import
选中待管理的文件所在文件夹,如E:\codes\NTPacket,単击鼠标右键,选择“TortoiseSVN”à“Import”à确定,在身份认证弹出框,输入passwd文件里正确的用户名和密码,即可上传成功。
- 签出版本库里面的项目Checkout
选择一个空白地方或者新建一个空文件夹,単击鼠标右键,选择“SVN Checkout”,然后确认在身份认证弹出框,输入passwd文件里正确的用户名和密码,即可签出。
- 修改文件Commit及Update。Checkout到本地的文件,可以修改,修改后选中当前文件或其目录,鼠标右键,弹出菜单多出“SVN Update”及“SVN Commit”, Commit提交此次修改,Update重新下载服务器文件至本地。
- 导出版本库Export。checkout下载文件到本地后,与svn服务器有仍有状态关联,可以修改提交等。而export仅仅是下载文件到本地,之后与svn服务器没任何关联,修改后也无法提交。
七、 服务自启动
一般情况,启动SVN服务,需要每次执行步骤三,DOS窗口还必须一直开着。这样很不方便,可以把步骤三封装成Windows Service自启动。
- 新建一个空bat文件,如svnSer.bat,输入
sc create svnlt binpath= "\"D:\Program Files\Subversion\bin\svnserve.exe\" --service --root \"D:\SvnRoot\repose2\"" displayname= "Subversion Server" depend= Tcpip start= auto
说明:a. svnlt为服务名;b. 赋值=左边没空格,右边有一个空格;c.注意路径中的”号及\书写正确。
- 双击svnSer.bat文件,完成Windows Service注册。
- 启动svnlt服务有两种方式:第一种,重启电脑,svnlt服务会自启动;第二种,在DOS界面执行net start svnlt语句完成启动。
net start svnlt (启动svn版本库服务)
net stop svnlt (停止服务)
sc delete svnlt (删除服务,后需重新注册svnlt服务)
八、 多版本库与用户权限配置
- 多版本库结构
一般情况,部门组织或开发团队有多个项目需要版本控制,可多个项目共用以一个版本库,也可以每一个项目对应一个版本库,建议用后者。
SVNRoot为根目录,为MobilePlatform项目创建一个版本库,为KTCoder项目创建另一个版本库,项目KTCoder下有两文件夹Kernel和Business。
1> 新建空目录D:\SVNRoot;
2> cmd命令行,进入DOS界面执行svnadmin create D:\svnRoot\MobilePlatform创建版本库MobilePlatform;
3> DOS界面执行svnadmin create D:\svnRoot\KTCoder创建版本库KTCoder;
4> svnServe.exe –d –r D:\svnRoot启动服务。TortoiseSVN Repository Browser 中URL栏输入svn://localhost/MobliePlatform访问MobilePlatform项目版本库,svn://localhost/KTCoder访问KTCoder项目版本库。
- 用户权限配置
人员情况(权限举例):
- Lz,公司老总,分配只读所有文档的权限;
- Wfh,Zg,项目经理,分配自己管辖项目读写权限,及其他项目只读权限;
- Lyk,KTCoder项目核心开发人员,Kernel模块唯一开发者,Kernel读写,其他读写;
- Whx,KTCoder项目开发人员,Kernel模块只读,Business模块读写;
- Dgy,MobilePlatform项目开发人员;
- Fyh,svn管理员。
1> 打开版本库下的conf\svnserve.conf文件,删除下面几行的前面注释符#和空格。MobilePlatform版本库与KTCoder版本库一致处理。
[general]
# anon-access = read à anon-access = none //匿名访问,改成none
# auth-access = write à auth-access = write
# password-db = passwd à password-db = passwd //指定用户密码文件
# authz-db = authz à authz-db = authz //指定权限文件
可以指定上面两个文件的路径。
2> 打开版本库下的KTCoder\conf\ passwd文件,添加
[users]
Lz = 123
Wfh = 123
Zg = 123
Lyk = 123
Whx = 123
Dgy = 123
Fyh = 123
3> 打开版本库下的KTCoder\conf\ authz文件,添加
[groups]
g_vip = Lz, Wfh
[KTCoder:/]
@g_vip = rw
Fyh = rw
Lyk = r
Whx = r
* =
[KTCoder:/Kernel]
Lyk = rw
Fyh =
[KTCoder:/Business]
Whx = rw
此authz文件权限分配结果是:
- Zg,Dgy, KTCoder项目无任何权限;
- Lz ,Wfh,整个项目所有文件读写权限;
- Lyk,Kernel读写,其他所有文件只读;
- Whx,Business读写,其他所有文件只读;
- Fyh, KTCoder、Business目录下文件读写,Kernel无权限。
4> a. 权限可以分组,“g_vip = Lz, Wfh”,然后给组分配权限“@g_vip = rw”;b. “* = ”表示任何人没有权限;c. authz在本库下时,[KTCoder:/Kernel] 中的根目录可以写成[Kernel]
SubVersion权限示例:http://coldtear.iteye.com/blog/28440
5> 权限在文件目录间父子继承、联合,以子目录为准。
九、 Apache服务安装及配置
- 双击httpd-2.2.25-win32-x86-openssl-0.9.8y.msi文件开始安装。
- 完成安装后,打开浏览器,输入地址http://localhost测试安装是否成功。
- 我的电脑à属性à高级à环境变量à系统环境变量Path新增“D:\Program Files\Apache Software Foundation\Apache2.2\bin”。
- 复制D:\Program Files\Subversion\bin下的so文件至D:\Program Files\Apache Software Foundation\Apache2.2\modules。
- 打开文件D:\Program Files\Apache Software Foundation\Apache2.2\conf\ httpd.conf找到下面两行,去掉前面的注释符#。
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
新增下面两行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
- httpd.conf文件末,新增下一段代码
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:/SVNRoot
</Location>
在浏览器中输入http://localhost/svn/可访问svnRoot下所有版本库文件。
- 如果需要启用用户验证及其权限分配,添加如下
<Location /svn>
DAV svn
SVNListParentPath on ‘如注销,则无法访问
SVNParentPath D:/SVNRoot
AuthzSVNAccessFile D:/SVNRoot/myAccess
#Satisfy Any ‘不认证时是否显示一级目录
AuthType Basic
AuthName "SubVerion LTong"
AuthUserFile D:/SVNRoot/myUser
Require valid-user
</Location>
- 权限文件
权限文件myAccess与SubVersion版本库权限文件配置格式一致。
- 用户密码文件
用户密码文件与SubVersion版本库用户文件格式不一致,需要DOS下
htpasswd –cb myUser admin ‘第一次创建用户文件
然后输入密码两次,创建myUser后,可以新增用户
Htpasswd myUser fu ‘然后输入密码两次
十、 Eclipses vn插件
- 安装
http://welcome66.iteye.com/blog/1845176
- 使用
http://www.cnblogs.com/dongritengfei/archive/2010/03/03/1677308.html
http://subclipse.group.iteye.com/group/wiki/1619-subclipse-getting-started-guide-and-reference-b
十一、 Visual Studio2005 svn插件
- 安装
- 使用
http://blog.csdn.net/panderman/article/details/7707785
http://haner0926.blog.163.com/blog/static/2184154820071129111018599/
http://blog.163.com/haohengzhen@126/blog/static/76137910201211093727571/