CentOS 7 使用SVN+Apache搭建版本控制服务器
svn简介
Subversion是一个免费/开源的版本控制系统, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. 由于这个特点, 很多人把版本控制系统 看成是一种 “时间机器”.
Svn的组件
- svn 客户端命令行工具
- svnversion 用于报告工作副本状态 (就项目的版本号而言) 的工具
- svnlook可以直接检查仓库的工具
- svnadmin 用于创建, 调整或修复 Subversion 仓库的工具
- mod_dav_svn Apache HTTP 服务器插件, 该插件允许用户通过网络访问仓库
- svnserve 一个定制的, 可独立运行的服务器程序, 可以以守护进程方式运行, 也可以被 SSH 调用, 这是另一种允许用户通过网络访问仓库的方法
- svndumpfilter 过滤 Subversion 仓库转储数据流的程序
- svnsync 可以跨越网络对仓库进行增量镜像备份的程序
- svnrdump 可以跨越网络对仓库历史进行转储和加载的程序
- svnmucc 该工具支持在没有工作副本的情况下, 在一个单独的提交中对多个 仓库执行基于 URL 的操作
简单点来说,版本控制就是数据仓库,它可以记录你对文件的每次更改。这样,就算你在昏天黑地的改了几个月后老板说不要了,还是按照过去那样,你也不会抓狂,简单的恢复版本操作就搞定一切
常见版本控制软件 :
CVS 由于之前CVS编码的问题,现在大多数软件开发公司都使用SVN替代了CVS
SVN 集中式版本控制器
git 分布式版本控制器
Svn 服务端运行方式
- 独立服务器访问s svn://IP/svn_test
- 借助apache等http服务 http://IP/svn_test
- 本地文件 file:///svn_test
搭建svn 服务器+ apache 实现版本控制服务器
安装svn服务器,apache, mod_dav_svn 软件包
[root@svn ~]# yum -y install subversion httpd mod_dav_svn # mod_dav_svn模块是http服务的插件,可以让版本库通过http协议,在网站上展现
创建版本库目录,并修改相应权限
[root@svn ~]# mkdir /var/repos [root@svn ~]# svnadmin create /var/repos/damowang.cn [root@svn ~]# ls /var/repos/damowang.cn conf db format hooks locks README.txt [root@svn ~]# svnserve -d -r /var/repos/ # 开启服务 # -d 表示以daemon方式(后台运行)运行 -r 指定svn根目录是/var/repos [root@svn ~]# netstat -antup|grep 3690 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 15492/svnserve
配置Apache
查看apache支持subversion两个动态库有没有安装成功
[root@svn ~]# find / -name mod_dav_svn.so /usr/lib64/httpd/modules/mod_dav_svn.so [root@svn ~]# find / -name mod_authz_svn.so /usr/lib64/httpd/modules/mod_authz_svn.so
配置apache通过mod_dav_svn模块访问SVN服务器
[root@svn ~]# vim /etc/httpd/conf.d/subversion.conf # 文件存在就直接修改 , 不存在就手写 <Location /svn> DAV svn SVNParentPath /var/repos AuthType Basic AuthName " SVN server of damowang!" AuthUserFile /home/svn/passwd AuthzSVNAccessFile /home/svn/auth Require valid-user </Location>
注释:
<Location /svn> apache的虚拟目录 后期通过链接:http://192.168.94.111/svn 来访问
DAV svn
SVNParentPath /var/repos 存放仓库的路径 :damowang.cn的绝对路径
AuthType Basic
AuthName " SVN server of damowang!" apache认证时弹出的消息
AuthUserFile /home/svn/passwd passwd存储用户名和密码
AuthzSVNAccessFile /home/svn/auth 存放用户的权限
Require valid-user
</Location>
建立本地访问控制文件/home/svn/passwd,#后期通过httpd服务器访问svn时,会使用这个文件中的用户信息验证用户和密码
[root@svn ~]# mkdir /home/svn [root@svn ~]# htpasswd -c /home/svn/passwd damowang New password: Re-type new password: Adding password for user damowang # -c 只在第一次创建用户密码文件时使用 创建/home/svn/passwd文件 会提示你输入密码,默认是MD5加密 [root@svn ~]# cat /home/svn/passwd damowang:$apr1$rk05bgL7$H2xOG1YwZQpFLucpmutUu0
建立本地项目版本库权限控制文件
[root@svn ~]# vim /home/svn/auth [/] # 这个表示在所有仓库的根目录下 damowang =rw # 表示damowang用户对所有仓库根目录下的软件版本库有rw权限 [root@svn ~]# chown -R apache.apache /var/repos/ [root@svn ~]# systemctl start httpd
svn的访问地址是 http://192.168.94.111/svn/damowang.cn
SVN客户端
subversion windows客户端TortoiseSVN配置:
http://tortoisesvn.net/about.zh.html
下载与系统对应的包
安装之后在Windows上新建一个文件夹
填写用户名和密码就可以了
上传和下载
把文件放到文件夹里
选择上传的文件后点击ok
再访问网页
damowang用户有rw权限 点击文件名可以看到文件内容
在Linux下测试客户端 :
[root@svn repos]# svn checkout http://192.168.94.111/svn/damowang.cn 认证领域: <http://192.168.94.111:80> SVN server of damowang! “root”的密码: 认证领域: <http://192.168.94.111:80> SVN server of damowang! 用户名: damowang “damowang”的密码: ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <http://192.168.94.111:80> SVN server of damowang! 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?no A damowang/server.crt 取出版本 1。 [root@svn repos]# cd damowang [root@svn damowang]# ls server.crt