CentOS下安装配置Subversion(SVN)及CLI SVN常用命令

最近几个周以来,一直想弄一个SVN Server,但是一直没有成功,今天下定决心要弄好,结果终于弄了一个简单的。一路走来,最大的心得不是如何架设SVN Server,而是关于新事物、新知识的学习:可能会有很多有价值的参考资料,但是一定要选择一个不太复杂的简单教程,完整地来一遍,然后再不断地扩展丰富,这样学习既有成就感,又有层次感。

具体过程如下:

主要参考了http://wiki.centos.org/zh/HowTos/Subversion,但是完全按照这个来操作会有问题,事实上,CentO是的这个How tos是一个非常好的wiki和FAQ,但是好像每一个How to里面都有那么一点点问题。

1、安装相关组件

yum install mod_dav_svn subversion

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

如果你想令所有用户能阅读每个版本库,你可以为每个版本库的根目录加入以下一个分段:

/

  • = r

最后需要说明的是,使用Firefox时,第一次输入密码错误,第二次访问同样的版本库,

直接是禁止访问;或是第一次输入正确之后,第二次就不需要密码了!这是一个严重的问题,

清楚Firefox的近期历史和cookie,能屏蔽这个怪现象,但是应该有个方法可以让cookie立即

失效。具体还不知道这么设置。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

WordPress启用memcached动态缓存以及报错解决

张戈博客目前用的是Nginx 的 fastcgi 缓存方案,属于纯净态缓存模式,所以前台登录态什么的基本都没了。如果要兼顾前台登录态,又想速度快,有没有解决方案...

5189
来自专栏北京马哥教育

解决Redis 延迟故障

症状 前一段时间redis客户端在使用php connect 连接redis 的经常报一个redis server went away 等信息。 排查 首先想到...

3138
来自专栏Aloys的开发之路

SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化)

背景说明 作为一个团队开发,公司长期以来的实践证明,手工操作版本管理是非常不明智的,一来浪费人力,二来效率低下,三来容易犯错。那么版本管理用什么工具好呢? 在开...

24010
来自专栏程序生活

Laravel-博客实战+踩坑laravel-blog最终的效果踩的坑

最近在学习Laravel,参考的课程是后盾网地Laravel5.2博客项目实战 下面整个项目的开发过程: laravel-blog 基于laravel5....

6905
来自专栏琯琯博客

开发 Composer 包详细步骤

一、GitHub 创建一个名 uploadfile 新仓库,并克隆至本地。 二、初始化项目,生成composer.json文件 2.1 步骤 2.2 步骤解释...

66212
来自专栏魏艾斯博客www.vpsss.net

解决 WordPress 插件更新“需要访问您网页服务器权限”的问题

2666
来自专栏.Net移动开发

关于发布IOS的方法(本人亲身经历折腾很久终于成功)

前情提要:这位.NET程序员兄弟使用Smobiler开发了一个APP,尽管Smobiler云平台已经最大限度的简化了iOS应用的打包操作,但仍绕不开苹果公司强制...

1161
来自专栏Golang语言社区

51. Socket服务端和客户端使用TCP协议通讯 | 厚土Go学习笔记

Socket服务器是网络服务中常用的服务器。使用 go 语言实现这个业务场景是很容易的。 这样的网络通讯,需要一个服务端和至少一个客户端。 我们计划构建一个这样...

3136
来自专栏IT笔记

MVC与三层架构有什么区别

首先,声明一下,三层是三层,MVC是MVC,这俩是毫无关系的。 三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。 三层架构通常包括表示层...

3458
来自专栏静晴轩

如何设置添加SSH

去(2014)年有开始折腾个人Blog;从使用Jekll到Hexo,平台也从Github一度迁移至国内的Gitcafe(Hexo创建/测试/发布Blog都极为方...

4696

扫码关注云+社区