本方法适用于本机或小型局域网代码版本控制。使用svn://协议。如果想使用http://协议则需安装配置apache. 本文还基于ubuntu与windows samba共享服务。
1.安装软件
[c-sharp] view plaincopy
1. sudo apt-get install subversion
2.创建代码库
cd /home/svnuser/svn
mkdir repository_name
[c-sharp] view plaincopy
1. svnadmin create repository_name
这条命令会在当前目录下创建名为repository_name的文件夹,后面用hopenvm_linux作为实例。其下包含
[c-sharp] view plaincopy
1. hopenvm_linux|-- conf/|-- db/|-- format|-- hooks/|-- locks/`-- README.txt
3. 启动svnserve服务器
[c-sharp] view plaincopy
1. svnserve -d -r /home/svnuser/svn
-r后面是repository_name文件夹的上级目录,启动服务器后,可以查到库的信息
[c-sharp] view plaincopy
1. coldfire@ubuntu:~/workspace/svn$ svn info svn://192.168.1.11/hopenvm_linuxPath: hopenvm_linuxURL: svn://192.168.1.11/hopenvm_linuxRepository Root: svn://192.168.1.11/hopenvm_linuxRepository UUID: 08e1aec2-22ff-447f-afd3-23c3ff467b4dRevision: 0Node Kind: directoryLast Changed Rev: 0Last Changed Date: 2011-06-06 04:53:28 -0700 (Mon, 06 Jun 2011)
关于svnserve.conf的内容配置来源:SVN 认证失败
解决办法是:
passwd文件内容:
[plain] view plaincopy
1. [users]
2. # harry = harryssecret
3. # sally = sallyssecret
4. admin = admin
5. test = test
格式是:帐号 = 密码一个用户为一行
接着:将svnserver.conf的内容中:
anon-access =read 改为 anon-access = none 即可。
总结:
一、配置
[plain] view plaincopy
1. [general]
2. anon-access = none #使非授权用户无法访问 如果该值为read,则非授权用户可读。这就为什么不用输入帐号密码就可访问的原因了
3. auth-access = write #使授权用户有写权限
4. password-db = passwd #指明密码文件路径
5. #authz-db = authz #访问控制文件
6. realm = My First Repository
二、指令
启动服务执行svnserve -d -rsvn服务根目录
svnserve指令用于启动svn服务,-d指明以守护模式运行,svn自动在3690端口监听。3690是默认端口,可以使用“--listen-port=”或者“--listen-host=”来指定其它端口。-r选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。
使用以下命令检出 svn checkout svn://127.0.0.1/dir 。IP需要根据具体情况调整,dir为版本库路径,若在启动时已指定则可省略。
版本库信息在版本库文件夹里,所以要删除版本库只需要删除版本库所在的文件夹即可。另外工作副本只是自己维护的文件夹,可以用Windows直接删掉,对别人没有影响。千万不要使用版本库的删除命令,否则版本库里的内容也会被删除。
三、上面我说了,如果去掉authz-db = zuthz前面的#号,必然认证失败。我在这要纠正一下。无知者无畏啊。经过测试,顺利通过认证
1、将上面的authz-db = authz 前面的 # 号去掉
2、修改authz文件
[plain] view plaincopy
1. [aliases]
2. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
3.
4.
5. [groups]
6. harry_and_sally = admin,sally # 这里我采用分组形式。因为是团队合作,所以有多个人
7. # harry_sally_and_joe = harry,sally,&joe
8.
9.
10. # [/foo/bar]
11. # harry = rw
12. # &joe = r
13. # * =
14.
15. [bobo:/] #对bobo仓库授权
16. @harry_and_sally = rw #r 表示读 w 表示写
17. # * = r # * 通配符,表示所有人,如果去掉前面#号,表示任何人可访问(只读访问,不可写)——注意:经测试,去掉#后,仍需要验证。
如果不采用组的方式,配置如下:
[plain] view plaincopy
1. [aliases]
2. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
3.
4. [groups]
5. # harry_and_sally = zm2714,sally
6. # harry_sally_and_joe = harry,sally,&joe
7.
8. [bobo:/]
9. admin = rw
10. # &joe = r
11. #* =r
12.
13. #[bobo:/]
14. #@harry_and_sally = rw
15. # * = r