SVN版本控制安装配置说明
版本控制好工具有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/
SVN版本控制安装配置说明的更多相关文章
- SVN 版本控制安装
客户端 一路点击next即可 注意事项: 这个一定要选,否则后面使用会出现问题. 选择下拉菜单的第一项
- 版本控制工具svn的安装与简单使用
版本控制工具多用于多人协作开发项目中,这不同于个人开发项目,想把自己代码怎样放置都可以,而且删除了代码很难查找. 版本控制工具类似于个人处理钱的过程,放于自己口袋管理类似于个人开发情形,如果自己钱丢了 ...
- CentOS下 SVN版本控制的安装(包括yum与非yum)的步骤记录。
一.yum安装 rpm -qa subversion //检查是否安装了低版本的SVN yum remove subversion //如果存储旧版本,卸载旧版本SVN 开始安装 yum -y ins ...
- CentOs下 SVN版本控制的安装(包括yum与非yum)
一.yum安装 rpm -qa subversion //检查是否安装了低版本的SVN yum remove subversion //如果存储旧版本,卸载旧版本SVN 开始安装 yum -y ins ...
- SVN版本控制工具使用学习
SVN版本控制工具使用学习 Subversion是优秀的版本控制工具. 1.下载和搭建SVN服务器 http://subversion.apache.org/packages.html 类型有5种,推 ...
- 基于腾讯Centos7云服务器搭建SVN版本控制库
基于腾讯Centos7云服务器搭建SVN版本控制库 最近在和小伙伴组队参加一个关于人工智能的比赛,无奈不知道怎么处理好每个人的代码托管问题,于是找到了晚上免费svn托管服务器的服务,但是所给的免费空间 ...
- SVN的安装以及和eclipse的结合使用
SVN概述 l 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: l 备份多个版本,占用磁盘空间大 l 解决代码冲突困难 l 容易引发BUG l 难于追 ...
- SVN版本控制图标未显示或显示异常解决方法
SVN版本控制图标未显示问题解决方法,刚开始遇到这个问题的时候,好苦恼.经过“千辛万苦”的努力,终于得以解决,分享给大家,希望能帮到各位哦! 工具/原料 SVN安装包 方法/步骤 首先安装 ...
- 如何在一个ubuntu系统上搭建SVN版本控制工具
有话说,由于公司项目部署需要,将Windows工程迁移到Linux,通过调查确定使用Ubuntu的Linux操作系统.那么如何快速搭建和Windows一样快捷方便的开发环境就很重要了.本文讲述如何在一 ...
随机推荐
- Android:一个高效的UI才是一个拉风的UI(一)
开篇 Android是一个运行在移动终端上的操作系统,跟传统PC最大的不同所在就是移动终端的资源紧缺问题“比较”明显,当然对于一些屌丝机型,应该用“非常“来形容才靠谱.所以经常会出现在一些比较缺乏青春 ...
- Javascript编程模式(JavaScript Programming Patterns)Part 1.(初级篇)
JavaScript 为网站添加状态,这些状态可能是校验或者更复杂的行为像拖拽终止功能或者是异步的请求webserver (aka Ajax). 在过去的那些年里, JavaScript librar ...
- Android ListView(Selector 背景图片 全选 Checkbox等按钮)
list_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm ...
- Qt 自定义model实现文件系统的文件名排序
前段时间,需要做一个功能是要做文件系统的排序的功能.由于是自己写的model, 自己定义的数据结构.最初的想法只有一个自己去实现文件夹跟文件名的排序算法,不过感觉比较费时间.后来想到的是QFileSy ...
- linux 匹配查询列表中包含某一特殊字符的所有行中的某一列
命令: ll | grep sh | awk '{print $9}' 解析: 其中,匹配列的命令为awk '{print $n}',$n为匹配的第几列.
- Java-Swing嵌入浏览器(一)
今天要说的额是浏览器的第一个版本是用DJnative-swt和swt包开发的调用本地浏览器和webkit浏览器的示例 这是我的工程目录[源码见最后]: src下为写的源码,lib为引入的swt和DJn ...
- Android 使用 popupWindow实现弹层并操作弹层元素
需求: 点页面,出现弹层,弹层包含EditText,Button等,点击Button实现提交操作: 最终代码: private PopupWindow popupWindow ; private Ed ...
- Server.MapPath 的使用方法
Server.MapPath 的使用方法 用法: 1.Server.MapPath ("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\ 2.Serve ...
- Android Root原理
概述:通过阅读本文可以深刻理解Android系统中获得Root权限的方法和原理.本文会详细介绍Root的目的,原理和代码层次的具体实现方法. Android Root介绍: 1. Root目的 手机获 ...
- AOP 实现的原理简析
AOP简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能 ...