最近几个周以来,一直想弄一个SVN Server,但是一直没有成功,今天下定决心要弄好,结果终于弄了一个简单的。一路走来,最大的心得不是如何架设SVN Server,而是关于新事物、新知识的学习:可能会有很多有价值的参考资料,但是一定要选择一个不太复杂的简单教程,完整地来一遍,然后再不断地扩展丰富,这样学习既有成就感,又有层次感。
具体过程如下:
主要参考了http://wiki.centos.org/zh/HowTos/Subversion,但是完全按照这个来操作会有问题,事实上,CentO是的这个How tos是一个非常好的wiki和FAQ,但是好像每一个How to里面都有那么一点点问题。
1、安装相关组件
2、基本配置
1)保证Apache正常工作,80端口开放,可能会需要更改防火墙,手动打开80端口
2)编辑/etc/httpd/conf/httpd.conf,或是/etc/httpd/conf.d/subversion.conf(CentOS特色),添加以下内容:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/www/svn
AuthzSVNAccessFile /etc/svn-acl-conf
AuthType Basic
AuthName "Hacking SVN,Now Begin!"
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>
3、添加用户
使用命令:htpasswd -cm /etc/svn-auth-conf yourusername,首次添加要带c。
再次添加:htpasswd -m /etc/svn-auth-conf anotherusername
按照提示设置密码就OK了。
4、设置版本库
cd /var/www/
mkdir svn
svnadmin create test
chown -R apache.apache test/
service httpd restart
此时使用浏览器访问http://ip/svn/test,能看见Revision 0:/ 的页面
5、svn import
建一个hello目录,里面有Hello.cpp,使用命令svn import hello/ file:///var/www/svn/test/hello -m "Initial import",即能导入成功
6、svn co(check out)
svn co http://ip/svn/test/hello
能在当前目录中看到check out下来的hello目录
7、svn ci(commit)
cd hello/
vim Hello.cpp修改完成后
svn ci(或是commit) -m "Second modify"
即完成chek in操作
8、add、delete文件
增加、删除某个文件,然后提交check in。
9、查看日志
svn log http://ip/svn/test/hello
svn list http://ip/svn/test/hello
10、访问控制清单设置
创建文件/etc/svn-acl-conf
编辑,文件规则为:
=============================================
版本库名称:版本库路径
用户 = 访问权
当中访问权可以是 r(只读)、rw(读写)、或空白(禁止访问)。缺省的 ACL 是禁止用户访问版本载。假设你有一个名叫framework 的版本库,而你想给 john 只读的权限,及 joe 读写的权限。你可以加入下面这个分段:
framework:/
john = r
joe = rw
你亦可以在名叫 groups 的分段内置立群组,然后在访问控制清单内将 @ 符号放在群组前面。例如:
groups
staff = joe, george
framework:/
john = r
@staff = rw
如果你想令所有用户能阅读每个版本库,你可以为每个版本库的根目录加入以下一个分段:
/
最后需要说明的是,使用Firefox时,第一次输入密码错误,第二次访问同样的版本库,
直接是禁止访问;或是第一次输入正确之后,第二次就不需要密码了!这是一个严重的问题,
清楚Firefox的近期历史和cookie,能屏蔽这个怪现象,但是应该有个方法可以让cookie立即
失效。具体还不知道这么设置。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。