一, 单仓储的svn服务器搭建
二, 多仓储的svn服务器搭建
三, 权限的分配
四, 开启svnserve的方法
#####################单仓储的svn服务器搭建########################
参考内容:
**svn安装与其服务器搭建:
**http://jingyan.baidu.com/article/93f9803fea9ff4e0e46f55f0.html
工具/原料
· TortoiseSVN-1.8.4.24972-win32-svn-1.8.5.msi SVN安装包
· setup-subversion-1.8.4.msi 版本控制,搭建服务器用,其他使用者电脑不需要
· LanguagePack_1.8.4.24972-win32-zh_CN.msi svn汉化包
1. 双击TortoiseSVN,会弹出安装界面,一直Next最后Install即可,等待片刻即安装完成
2. 安装汉化包(可选),双击LanguagePack,后点击Next最后Install,等待片刻即安装完成
3. 安装Setup-Subversion,双击Setup-Subversion,后点击Next最后Install,等待片刻即安装完成
4. SVN汉化界面配置,在文件夹空白位置单机右键,选择TortoiseSVN后点击settings弹出界面,Genneral右侧Language选择"中文(简体)",点击应用确定即可
5. 配置服务器,在根目录创建一文件夹E:\svnHome124,进入文件夹,在文件夹空白位置单机右键,选择TortoiseSVN后点击"在此创建版本库"
6. 在E:\svnHome124\conf目录下找到svnserve.conf,用记事本打开,找到
# password-db = passwd,将前面的#删除,保存关闭。同一目录下找到passwd,用记事本打开,找到
# harry = harryssecret
# sally = sallyssecret
例: zhangsan = zhangsan
删除前面的#号,这里为用户的账号管理,账号=密码,注意别留空格;保存关闭
7. 启用SVN服务,按下windows+R键,输入cmd进入命令界面,输入:svnserve -d -r e:\svnHome124,其中,e:\svnHome124为你服务器目录;注意:注意:这是临时打开的服务,命令执行后不能关闭窗口;也可将SVN服务设为自动启动
sc createsvnservice binpath= “c:Program Files\Subversion\bin\svnserve.exe–service -r e:\svnHome124”(在四, 开启svnserve的方法 会详细讲解)
8. 测试是否安装成功,创建一文件夹,选择文件夹单击右键SVN检出;svn://192.168.0.108,此为服务器IP地址(win下可通过虚拟dos窗口:ipconfig/all),输入账号密码,即第六步配置的账号密码;如显示”完毕 于版本0“即为安装成功,
9. 如果出现”期望格式在1~4之间,发现格式6“,则为TortoiseSVN与setup-subversion版本同,可下载相同版本安装,也可在命令界面进入你TortoiseSVN的安装Bin文件夹c: c:\Program Files\TortoiseSvn\bin 然后创建数据库,注意删除之前手动创建的,命令:svnadmin create e:\svnHome124
#####################到此为止单仓储的svn服务器搭建完成########################
########################以下为多仓储的svn服务器搭建##########################
参考自:
**SVN 多项目管理:
**http://webnoties.blog.163.com/blog/static/18352514120139933416542/
**
Subversion的目录结构是很自由的,所有的规划都必须是你自己规定,考虑一个 subversion仓库的目录树,你可以把任何一个目录认定为一个项目,你可以只checkout这个目录下的所有文件进行编码,跟CVS不同,CVS显式指定一个个module。所以你可以在一个仓库内保存多个项目,也可以一个仓库保存一个项目而使用多个仓库。我个人比较喜欢第二种,因为Subversion的每次commit都会导致整个仓库版本号增加一个,会使得 多个项目的 版本号出现断层。一个仓库一个项目,显得更优雅一些。仓库规划:
下面是一个多版本库的目录:
D:/svnHome124
├─ARM
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
├─FPGA
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
└─client
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks
这三个仓库的建立方法如下图所示,在命令界面进入你TortoiseSVN的安装Bin文件夹c: c:\Program Files\TortoiseSvn\bin 然后创建数据库,注意删除之前手动创建的,命令:svnadmin create e:\svnHome124(或者在根目录创建3文件夹ARM,FPGA,client,进入文件夹,在文件夹空白位置单机右键,选择TortoiseSVN后点击"在此创建版本库",重复3次):
e:/svnHome124(在这个目录下建立每个项目独立)下有3个目录ARM,FPGA和client,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-db和authz-db文件。
password-db=../../passwd
authz-db=../../authz
取出ARM下面conf文件夹下的authz和passwd两个文件到e:/svnHome124根目录下面
这样,e:/svnHome124/passwd和e:/svnHome124/authz就控制了所有版本库的svnserve访问。另外在后面的操作中要关闭匿名访问,应该去掉“anon-access=none”前的“#”号,保证只有认证用户可以访问。
注意:还有一点需要注意,那就是svnserve的“realm”的值,在上面的设置下,应该保证所有的版本库使用相同的realm值(可以不修改),这样,对版本库的密码缓存可以在多个版本库之间共享,更多细节见客户端凭证缓存。
使用 svnserve -d -r "e:\svnHome124" 启动。这样你的项目的url是:
svn://IP/ARM
svn://IP/FPGA
svn://IP/client
在客户端新建一个目录,作为import的内容,比如c:\svnimport\rolex,然后在里面建立branches,tags,trunk子目录,把你需要源代码管理的项目放入trunk目录,注意删除垃圾文件。在c:\svnimport\rolex上点击Import...,选择url为 svn://IP/ARM,导入。你可以使用仓库浏览器查看导入的效果。
需要工作时,新建一个目录比如c:\svnclient\ARM\trunk,然后在trunk上checkout出svn://IP/ARM/trunk上的内容。
##########################到此为止3个独立仓储建立完毕#####################
##########################下面给每个用户配置权限###########################
**参考自:
**SVN权限配置:
**http://www.svn.net.cn/content-7-1747-1.html
版本库禁止任何匿名用户的访问,只对认证用户有效。
root:配置管理管理员,对版本库有完全的管理权限。
p1_a1:project1的管理员,对project1有完全权限。
p1_d1:project1的开发者,对project1的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p1_t1: project1的测试者,对project1的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。
p2_a1:project2的管理员,对project2有完全权限。
p2_d1:project2的开发者,对project2的trunk有完全的权限,但是对其中的/trunk/admin目录没有任何权限。
p2_t1: project2的测试者,对project2的trunk有完全的读权限,但是对其中的/trunk/admin目录没有任何权限。
对应的组及组的用户:
p1_group_a:p1_a1
p1_group_d:p1_d1
p1_group_t:p1_t1
p2_group_a:p2_a1
p2_group_d:p2_d1
p2_group_t:p2_t1
5. 修改D:/SVNROOT/passwd文件
前面已经说过了,用户和密码文件应该是在D:/SVNROOT/passwd,所以我们为每一位用户设置权限,文件内容如下:
[users]
p1_a1=p1_a1
p1_d1=p1_d1
p1_t1=p1_t1
p2_a1=p2_a1
p2_d1=p2_d1
p2_t1=p2_t1
为了便于验证,所有密码和用户名一致。
6. 配置授权,修改D:/SVNROOT/authz
[groups]
# 定义组信息
p1_group_a=p1_a1
p1_group_d=p1_d1
p1_group_t=p1_t1
p2_group_a=p2_a1
p2_group_d=p2_d1
p2_group_t=p2_t1
[/]
# 指定所有的版本库默认只读,root可读写
*=r
root=rw
[project1:/]
# 指定对版本库project1根目录的权限
@p1_group_a=rw
@p1_group_d=rw
@p1_group_t=r
[project1:/trunk/admin]
# 指定对版本库project1的/trunk/admin根目录的权限,
# p1_group_a读写,p1_group_d和p1_group_t没有任何权限。
@p1_group_a=rw
@p1_group_d=
@p1_group_t=
[project2:/]
# 指定对版本库project2根目录的权限
@p2_group_a=rw
@p2_group_d=rw
@p2_group_t=r
[project2:/trunk/admin]
# 指定对版本库project2的/trunk/admin根目录的权限
# p2_group_a读写,p2_group_d和p2_group_t没有任何权限。
@p2_group_a=rw
@p2_group_d=
@p2_group_t=
经过以上设置以后,你会发现当使用用户“p1_d1”,检出project1的trunk时,目录是空的,好像admin目录根本不存在一样,当使用p1_d1用户浏览版本库时,能够看到admin目录,但是其中的内容却无法看到。
关于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8格式,在我的WINXP的UltraEdit里显示的文件格式为U8-DOS,具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。
再复杂的情况也不过如此,在实际的工作中要首先规划好权限,只赋给用户最小的权限,保证以最小的配置实现最复杂的权限控制。
##########################svnserve自动启动配置方法###########################
**参考内容:
**
**
**
*****************************************
**********创建自启动服务*************
我的Subversion安装在" C:\Program Files (x86)\Subversion\bin\svnserve.exe ",版本库在" E:\svnHome124",而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:
sc create svnservice binpath="\"C:\Program Files (x86)\Subversion\bin\svnserve.exe\"--service -r E:\svnHome124" displayname= "SVNService" depend=Tcpip
注意:有两点需要小心处理。首先,如果svnserve.exe所在的路径中包括空格,一定要用“\”处理“"”号
没有空格的写法:
"D:\Subversion\bin\svnserve.exe
--service -r D:\svnroot"
开启服务:
net start SVNService
删除服务:
sc delete Svnservice
**********手动开启服务*************
手动开启服务:
svnserve -d -r e:\svnHome124
参考文章:
svn安装与其服务器搭建:
http://jingyan.baidu.com/article/93f9803fea9ff4e0e46f55f0.html
SVN 多项目管理:
http://webnoties.blog.163.com/blog/static/18352514120139933416542/
SVN权限配置:
http://www.svn.net.cn/content-7-1747-1.html
SVNserve自启动设置方法: