您的位置:首页 > 其它

如何搭建局域网SVN-从单仓储到多仓储

2016-06-15 09:52 369 查看
 
一,    单仓储的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的目录结构是很自由的,所有的规划都必须是你自己规定,考虑一个 subver
4000
sion仓库的目录树,你可以把任何一个目录认定为一个项目,你可以只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自动启动配置方法###########################

**参考内容:

**

http://zhidao.baidu.com/link?url=1gUhlY4kkEYbaEkWTB6V03_hl0T32EoVpT7fZpjiNnS0VdhmTQbPiYDHA08tLb-h1NEgg0xOGpUCzvJixzqPSF_j48ip1VNwlsaMy7OUhWi

**

**

*****************************************

**********创建自启动服务*************

我的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自启动设置方法:

http://zhidao.baidu.com/link?url=1gUhlY4kkEYbaEkWTB6V03_hl0T32EoVpT7fZpjiNnS0VdhmTQbPiYDHA08tLb-h1NEgg0xOGpUCzvJixzqPSF_j48ip1VNwlsaMy7OUhWi

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息