SVN简易安装手册
上一篇 / 下一篇 2015-01-07 09:29:21 / 个人分类:SVN
一、安装步骤
假定现有一个名为“project_demo”的项目,项目组有4名成员,其中tswang为项目经理,liling为配置管理员,yangxia和szcao为普通成员,现在要为此项目建立SVN管理环境。
SVN服务器操作系统为Windows XP,4名成员内部局域网环境畅通。服务器可以是单独的一台电脑,也可以直接架设在配置管理员liling的电脑上。
以下安装步骤指的是服务器的架设,普通项目组成员仅需安装TortoiseSVN即可。
1、安装SVN服务器端
配置管理员liling在服务器上执行CollabNetSubversion-server-1.6.11-3.win32.exe,除了在svnserve Configuration和Apache Configuration页面修改SVN存放数据的Repository文件夹(下图中选择的文件夹是f:\svn_repos)和Apache的端口(下图中设置端口为8080)外,其它一路next到底。
右键点击“我的电脑”,选属性-高级属性-环境变量-系统变量-path,将SVN的httpd\bin文件夹加入path。
2、安装SVN客户端TortoiseSVN
项目组所有成员(包括服务器上)都需要安装客户端TortoiseSVN。
执行TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi,一路next到底,然后重新启动电脑。
执行LanguagePack_1.6.8.19260-win32-zh_CN.msi,一路next到底。右键菜单中选择TortoiseSVN-Settings-General-language-中文简体,将TortoiseSVN设置为中文简体。
3、配置Apache
编辑svn安装路径httpd\conf文件夹里的httpd.conf文件:
(1)去除“#LoadModule dav_fs_module modules/mod_dav_fs.so”前面的“#”;
(2)在LoadModule区域的末尾增加一行:
LoadModule authz_svn_module modules/mod_authz_svn.so
(3)删除末尾的如下4行:
<Location /svn>
DAV svn
SVNParentPath f:\svn_repos
</Location>
(4)在httpd.conf文件末尾,添加如下10行:
<Location /svn/>
DAV svn
SVNParentPath f:\svn_repos
SVNListParentPath on
AuthType Basic
AuthName "Project SVN"
AuthUserFile f:\svn_repos\passwd.conf
AuthzSVNAccessFile f:\svn_repos\access.conf
Require valid-user
</Location>
其中“f:\svn_repos”对应的是安装SVN服务器端时选择的Repository文件夹,可根据自己设定的文件夹相应修改。
注意:如果httpd.conf文件中含有中文,需要使用UltraEdit或NotePad++等文本编辑器将文件转换为“UFT-8无BOM”格式,否则将出错或控制无效,详见下文中“补充说明”的“含有中文的配置文件”。
4、设置用户名和密码
配置管理员liling在DOS命令行窗口中,将当前路径转换到f:\svn_repos文件夹,执行htpasswd -c passwd.conf liling,用于创建f:\svn_repos\passwd.conf这个用户密码文件,并在其中写入一个名为liling的用户(用户名只能包含字母和数字,而不能含有\%&/!@#等字符),然后输入两次要为liling设置的密码,完成liling用户的添加。
其中:-c是首次创建用户名密码文件的时候需要的参数,以后继续增加用户时就不要这个参数了。
然后使用htpasswd passwd.conf tswang增加tswang用户,同样增加szcao和yangxia用户。
5、建立项目的版本库
在f:/svn_repos文件夹下新建project_demo文件夹,右键点击project_demo,在右键菜单中选择TortoiseSVN――在此创建版本库,则自动在project_demo文件夹下建立与SVN相关的子文件夹,这样就建立了一个project_demo项目的空版本库。
按照项目的实际情况,修改安装包中project_demo/trunk文件夹下的各级目录,然后右键点击project_demo文件夹,在右键菜单中选择TortoiseSVN――导入,在弹出的窗口中,版本库URL处填写此项目的链接地址http://localhost:8080/svn/project_demo,导入信息处填写对此次操作的备注信息,然后点击确定,此时会弹出窗口要求进行用户认证,输入用户名liling及密码,将建立的各级子文件夹导入SVN服务器。
本地电脑上的project_demo文件夹仅是用来创建服务器上的各级子文件夹,此时可以将其删除。
6、设置控制权限
复制安装包中的access.conf到f:\svn_repos文件夹中,查找其中的“project_demo”替换为该项目的名称,并将用户ID分组对应写入groups下各行的等号后面,用户之间用英文的逗号隔离。
现在默认的权限是:
Ø 配置管理员(scm组)对所有文件夹具备读写权限;
Ø 项目经理(manager组)和项目普通成员(member组)对tags文件夹仅具备只读权限,对其他文件夹具备读写权限。
注意:如果httpd.conf文件中含有中文,需要使用UltraEdit或NotePad++等文本编辑器将文件转换为“UFT-8无BOM”格式,否则将出错或控制无效,详见下文中“补充说明”的“含有中文的配置文件”。
7、启动Apache
添加SVN安装路径下httpd/bin文件夹中的ApacheMonitor.exe的快捷方式到操作系统“开始”菜单的“启动”中,以便日后自动启动Apache的SVN服务,并运行ApacheMonitor.exe。
SVN的Apache服务正常启动后,可在IE浏览器中输入http://服务器IP地址:8080/svn/进行测试,应弹出要求用户登录的窗口,在其中输入用户名及密码,应可成功登录。
8、开始使用版本库
在某空白文件夹中,右键菜单选择“SVN检出”,在弹出窗口的“版本库URL”处填写此项目的链接地址“http://服务器IP地址:8080/svn/project_demo”,点击确定后检出此项目的版本库,然后即可开始使用。
二、补充说明
1、含有中文的配置文件
如果httpd.conf或者access.conf等配置文件中含有中文字符,需要使用UltraEdit(下方左图所示)或NotePad++(下方右图所示)等文本编辑器将文件转换为“UFT-8无BOM”格式,否则将出错或控制无效。
2、控制权限的设置
SVN的权限控制是以文件夹为最小控制单元的,与Apache集成后,可采用Apache的权限控制方式。
如果要实现更复杂的权限控制,需要修改access.conf。(如文件中含有中文,需要将此文件转换为“UFT-8无BOM”格式。)
以下面的配置为例,来说明权限的设置方法:
[groups]
admin = SVNADMIN
manager= yhshu,qkxia
member = tphou,yinwei,wylian,hliao
sc_all = @manager,@member
[/]
* =
@admin = rw
@sc_all = r
[project_demo:/]
@manager = rw
[project_demo:/trunk/源程序]
@member = rw
lwang = rw
说明:
[groups]:用于定义用户分组,每个组一行,“=”前面是组的名字,“=”后面是这个组中各用户的名字,每个用户名之间用“,”分隔;引用用户名的时候,直接写ID,如“yhshu”;引用组名的时候,需要在组名前加“@”,如“@manager”(@和组名间不能有空格)。
Øadmin = SVNADMIN:定义了“admin”这个用户组,admin这个组中仅有1个名为SVNADMIN的用户;
Ømanager= yhshu,qkxia和member = tphou,yinwei,wylian,hliao:定义了manager和member这两个组,manager组中有yhshu、qkxia这两个用户,而member组中有4个用户;
Øsc_all = @manager,@member:定义了sc_all这个组,这个组由manager和member这两个组合并而来;
[/]:其下几行用于定义对Repository文件夹根目录的访问权限;每条权限规则一行,“=”前面是用户或者组的名字,“=”后面是这个用户或者组所拥有的权限(r为读,w为写,空则为无任何权限);默认情况下,下层目录自动继承上层目录定义的权限规则,除非另外单独定义下层目录的权限;
Ø* =:定义了全部人员对这个根目录都没有任何权限(下面几行授权的除外);
Ø@admin = rw:定义了admin这个组拥有对根目录的读写权限;
Ø@sc_all = r:定义了sc_all这个组拥有对根目录的只读权限;
[project_demo:/]:定义的是project_demo这个项目的版本库的控制权限;
Ø@manager = rw:定义了manager组对project_demo这个版本库拥有读写权限;
[project_demo:/trunk/源程序]:定义的是project_demo这个项目下的“trunk/源程序”这个文件夹的控制权限。
Ø@member = rw:定义了member组对“project_demo/trunk/源程序”这个文件夹拥有读写权限;
Ølwang = rw:定义了用户lwang对“project_demo/trunk/源程序”这个文件夹拥有读写权限。
按如上设置,各层权限继承,最终的权限结构如下:
ØSVNADMIN:作为管理员,拥有对全部内容的读写权限;
Ø@manager:manager这个组拥有对全部内容的只读权限,且拥有对project_demo这个项目的读写权限;
Ø@member:member这个组拥有对全部内容的只读权限,且拥有对“project_demo:/trunk/源程序”这个文件夹的读写权限(对其它文件夹只有只读权限);
Ølwang:这个用户对“project_demo:/trunk/源程序”文件夹具有读写权限,但对根目录下的其它项目和project_demo这个项目的其它内容都没有任何权限。
3、新建另一个版本库
如果要在此服务器上为另一个新项目project_abc建库,则:
(1)参照第上述第4步,使用htpasswd passwd.conf XXXXX增加新用户;
(2)参照上述第5步操作,在f:/svn_repos文件夹下建立project_abc的版本库;
(3)手工修改access.conf文件,在[groups]区域仿照project_demo项目增加几个分组project_abc_scm、project_abc_manager、project_abc_member,
(4)在access.conf文件的[/]区域仿照project_demo项目增加如下3行:
@project_abc_scm = rw
@project_abc_manager = r
@project_abc_member = r
(5)在access.conf文件的末尾增加如下几行:
[project_abc:/]
* =
@project_abc_scm = rw
@project_abc_manager = r
@project_abc_member = r
[project_abc:/trunk]
@project_abc_manager = rw
@project_abc_member = rw
[project_abc:/branches]
@project_abc_manager = rw
@project_abc_member = rw
保存后无需重启Apatch,即可通过“http://服务器IP地址:8080/svn/project_abc”来访问新项目的版本库。
4、Apache启动失败时的处理
点击桌面右下角Apache服务的图标,选择CollabNet Subversion Apache-start,启动SVN的Apache服务。如果配置有误,在启动Apache的时候,会弹出错误窗口提示,此时在DOS的命令行窗口执行httpd -w -n "CollabNet Subversion Apache" -k start,则可看到配置文件具体哪里出错,然后针对错误进行修正。
由Location区域中引用的文件夹和文件名称错误导致的Apache启动报错,有时在DOS命令行窗口并不显示错误信息,此时请仔细检查Location中的文件夹和文件的名称,若修正后仍无法正常启动Apache,请重启电脑后再试。