设为首页 收藏本站
查看: 1668|回复: 0

[经验分享] SVN使用手册apache整合了

[复制链接]

尚未签到

发表于 2018-11-26 13:17:22 | 显示全部楼层 |阅读模式
一、SVN介绍
SVN是一个版本控制工具,Subversion 的版本库(repository),就是位于服务器端,统一管理和储存数据的地方。
要创建一个版本库,首先要确定采用哪种数据存储方式。在 Subversion 中,版本库的数据存储有两种方式,一种是在 Berkeley DB 数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。


表1 两种版本库数据存储对照表


特性

Berkeley DB

FSFS

对操作中断的敏感

很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。

不敏感

可只读加载

不能

可以

存储平台无关

不能

可以

可从网络文件系统访问

不能

可以

版本库大小

稍大

稍小

扩展性:修订版本树数量

无限制

某些本地文件系统在处理单一目录包含上千个条目时会出现问题。

扩展性:文件较多的目录

较慢

较慢

检出最新代码的速度

较快

可以

大量提交的速度

较慢,但时间被分配在整个提交操作中

较快,但最后较长的延时可能会导致客户端操作超时

组访问权处理

对于用户的 umask 设置十分敏感,最好只由一个用户访问。

对 umask 设置不敏感

功能成熟时间

2001 年

2004 年





Svn工作原理图示:


DSC0000.png




、SVN的搭建
1、所需软件包


httpd-2.2.4

apr-1.3.8.tar.gzapr-util-1.3.9.tar.gz
sqlite-amalgamation-3.6.17.tar.gz
subversion-1.6.5.tar.bz2
expat-1.95.7-4expat-devel-1.95.7-4
客户端:TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi


2、安装SVN



安装apache

# ./configure --prefix=/usr/local/apache2
--enable-dav
--enable-so
--enable-modules=most
//注:编译apache时要加上--enable-dav选项
# make
# make install

安装apr、apr-util
# tar -zxvf apr-1.3.8.tar.gz -C /usr/src
# cd /usr/src/apr-1.3.8
# ./buildconf         //验证系统是否有pythonautoconf、libtool
# ./configure --prefix=/usr/local/apr
# make
# make install

# tar -zxvf apr-util-1.3.9.tar.gz -C /usr/src
# cd /usr/src/apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install

安装sqlite
#./configure --prefix=/usr/local/sqlite
# make
# make install

安装svn
# tar -jxvf subversion-1.6.5.tar.bz2 -C /usr/src
# cd /usr/src/subversion-1.6.5/
# ./configure --prefix=/usr/local/svn   --with-apxs2=/usr/local/apache2/bin/apxs                          
--with-apr=/usr/local/apr      
--with-apr-util=/usr/local/apr-util
--with-sqlite=/usr/local/sqlite/   --with-ssl   --with-zlib打开zlib库支持
--enable-maintainer-mode    打开调试和编译时警告,仅供开发人员使用
# make
# make install


3apache的整合



修改APache配置文件

#vi /usr/local/apache/conf/httpd.conf
User www          修改apache默认启用用户为www
Group www
找到DocumentRoot /usr/loca/apache/htdocs  修改apache的主页到/WWW下
DocumentRoot “/www”

配置apache中svn认证
                 //设置url,代表要访问的仓库的父目录
   DAV svn
   SVNParentPath /data/svn      //svn根目录
   AuthType Basic           
   AuthName "SVN Test"
   AuthzSVNAccessFile /data/svn/authz.conf //svn认证文件,创建一个authz.conf文件
   AuthUserFile /data/svn/authfile   //apache认证文件
   Require valid-user

启动apache
/usr/local/apache/bin/apachectl start
绑定域名
#cat /usr/local/apache/conf/extra/httpd-vhosts.conf


DSC0001.png

测试域名绑定成功


4、SVN使用





创建svn项目仓库
# mkdir /data/svn                创建svn根目录
# svnadmin create /data/svn/drug //创建项目仓库drug
# /usr/local/svn/bin/svn import /www/drug file:///data/svn/drug -m "import
将/www/drug导入到svn库下
注:在导入仓库后,原来的目录树并没有转化成一个工作副本,需要使用checkout手动导出一个工作副本。
#chown –R www:www /data/svn/drug
#svn checkout file:///data/svn/drug /www/drug_new
   修改目录的属主为www
#chown R www:www /www/drug_new
#chmod R 700 /data/svn/
编写svn与apache同步脚本
#vi /data/svn/drug/hooks/post_commit
#!/bin/sh
export LC_CTYPE=zh_CN.GB18030  语言支持
SVN=/usr/local/svn/bin/svn          指定svn路径
WEB=/www/drug                  指定apache虚拟主机路径
$SVN update $WEB username www password xywyxywy
赋予脚本执行权限
#chmod 700 post-commit
#chown www:www post-commit
创建apache认证用户
# /usr/local/apache2/bin/htpasswd -(c)m /data/svn/authfile sum
输入密码:sum123
# /usr/local/apache/bin/htpasswd /data/svn/authfile wyj
//再添加一个用户


Svn权限配置文件

# vi /data/svndata/authz.conf
[drug:/]            //表示仓库drug根目录
sum = rw           //用户sum对drug库有读写权限
hou = r             //用户wyj对drug库有读写权限
[/]
* = r                //这个表示对所有的用户都具有读权限
[groups]          //这个表示群组设置
developers = sum, hou  //developers组中的用户
[pro1:/]
@svn1-developers = rw //对这个组有读写权限




启动svn服务
svnserver -d -r /data/svndata
设置svn和apache服务开机自动启用
#vi /etc/rc.local   
/usr/local/apache/bin/apachectl start
svnserve d r /data/svn


5.客户端使用



在客户机上安装TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi

在客户机上从服务器上checkout工作副本


DSC0002.png

在URL of repository一栏中输入svn服务器的checkout地址


DSC0003.png

在新的项目里面添加一个文件然后提交,查看/www/drug/ 里面有没有添加的文件,来证实svn库能够同步更新到linux下面那个虚拟主机的没。
SVN管理命令
1、svn命令

导入数据到版本库
# svnadmin create /data/svndata/pro1
# svn import /www/shop file:///data/svndata/pro1 -m “import”
查看版本库下的内容
# svn list file:///data/svndata/pro1
注:在导入仓库后,原来的目录树并没有转化成一个工作副本,需要使用checkout手动导出一个工作副本。

从版本库导出数据
# svn checkout file:///data/svndata/pro1
取出任意深度的数据
# svn checkout file:///data/svndata/pro1/ad/html
将数据放到新目录
# svn checkout file:///data/svndata/pro1 testweb
//将pro1工作副本放到testweb中,而不是默认生成的pro1目录
# svn co file:///data/svn/my_xywy_com/ /www/other/my.xywy.com
// 导出my_xywy_com全部文件,到/www/other/my.xywy.com下
它可以显示工作副本中的所有项目
# svn status -u -v

18 16 sum fff.txt
18 1 root index2.php
18 10 sum index20090416.html
18 17 sum 111/fff.txt
18 17 sum 111/index2.php
18 17 sum 111/index20090416.html
18 17 sum 111/index.jsp

2、svnlook命令
查看当前的版本仓库内容
# svnlook info 版本仓库

Sum //作者
2009-09-10 11:51:17 +0800 (Thu, 10 Sep 2009) //提交时间
0 //最后一次提交参数信息

查看最近一次更新的修订号
# svnlook youngest 版本仓库

显示一个版本仓库中文件和目录的树形结构图
# svnlook tree /data/svndata/pro2/ --show-ids

jytk.html
gallery.php
gywm.html
database.php
lxyp.html

查看仓库中某一个文件内容
# svnlook cat /data/svndata/pro2/ index.html //查看pro2项目的index.html文件中的内容

显示被修改的文件
# svnlook diff /data/svndata/pro2/

Added: 11.txt //显示增加了11.txt文件
3、导出svn版本库中的文件夹
若要彻底删除SVN版本库某文件夹,可以使用下面的方法。
查看项目sumitest中的列表
# svn list file:///data/svn/sumitest

fxywy/
fxywy/src
jxywy/
jxywy/src
src/
要把fxywy/src文件夹删除,重新导入到新的项目sumitest2中,方法如下:
# svnadmin dump /data/svn/sumitest > sumi1.dump
// 导出sumitest整个项目到sumi1.dump
# cat sumi1.dump | /usr/local/svn/bin/svndumpfilter exclude /fxywy/src > sumi2.dump
// 从sumi1.dump过滤出/fxywy/src目录。Windows中cat换成type
# svnadmin create /data/svn/sumitest2
// 创建新的项目库
# svnadmin load /data/svn/sumitest2 < sumi2.dump
//导出/fxywy/src 到sumitest2库
4、删除svn版本库中的文件夹
svn delete 可以从工作拷贝或版本库删除一个项目。
# svn delete -m “Deleting file”file:///data/svn/sumitest2/fxywy/
// 删除sumitest2下的/fxywy目录







SVN错误
1、CentOS5 安装svn时,make时出现下面的错误

/usr/bin/ld: cannot find -lexpat
collect2: ld returned 1 exit status
make: *** [subversion/svn/svn] Error 1
解决方法
缺少-lexpat 库文件,找安装盘中的
# rpm -ivh expat-x.x.x.x.rpm
# rpm -ivh expat-devel-x.x.x.x.rpm

3、在MyEclipse进行Java开发,用SVN进行版本控制Update时提示如下错误

update -r HEAD D:/xywyworkspace/fxywy
    Working copy not locked; this is probably a bug, please report
svn: Directory 'D:\xywyworkspace\fxywy\WebRoot\WEB-INF\classes\com\.svn' containing working copy admin area is missing
原因是eclipsesrc文件夹中的.svn文件夹也编译到WEB-INF/classes中去了,而复制过来的.svn中存储的是src文件夹中的版本信息,从而导致在更新时出错。
解决方法:
打开Eclipse中的 Project->Properties->Java Build Path 菜单,在右侧面板中的Source选项卡,在Excluded中加入**/.svn/**。也就是把.svn文件夹从编译路径中排除,这样就不会出现上面的问题了。
4、当提交时显示如下错误:

attempt to write a readonly database
则是因为/data/svn/yishengquan/db 目录中,权限不是apache可写的权限。修改db目录权限为apache可写即可。
# chmod www:www /data/svn/yishengquan/db








运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639882-1-1.html 上篇帖子: PHPINIDir directive honored per configuration tree apache配置错误 下篇帖子: apache2.2服务启动问题~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表