搭建SVN服务器
一、搭建svn环境并创建仓库:
1,安装Subversion;
# yum install -y subversion
2,检查是否安装成功(查看SVN版本号)
# svnserve --version
3、创建版本库
//先建目录
# mkdir /data/svn
# cd /data/svn
//创建版本库
# svnadmin create /data/svn/project
# cd project
//会看到自动生成的版本库文件
# ls
conf db format hooks locks README.txt
这样SVN环境搭建成功。
二、创建用户组和用户
1,进入版本库中的配置目录conf,
# cd conf
# ls
authz passwd svnserve.conf
权限配置文件(authz),用户名口令文件(passwd),svn服务综合配置文件(svnserve.conf)
要注意一点,任何配置文件的有效配置行,都 **不允许存在前置空格** ,否则程序可能会出错,给你一个 ``Option expected`` 的提示。
2、修改权限配置文件(authz)
# vim authz
将用户svnuser1,svnuser2加入snvuser用户组,
用户组svnuser对版本库project具有读和写的权限。
3、配置用户名命令文件(passwd)
# vim passwd
4、配置SVN服务综合配置文件 (svnserve.conf)
# vim svnserve.conf
//找到以下配置项,将前面的#号去掉,然后做相应的配置
anon-access = none //匿名用户访问权限:无
auth-access = write //普通用户访问权限:读、写
password-db = passwd //密码文件
authz-db = authz //权限配置文件
realm = /data/svn/project //版本库所在
注意:所有以上的配置项都需要顶格,即前面不能预留空格,否则报错
5、启动svn服务
-r 添加 版本库的根目录
-d 让SVN以deamon的形式运行
# svnserve -d -r /data/svn
如果提示:
svnserve: Can't bind server socket: Address already in use
说明svn已经被启动了,由于我们修改了配置文件,因此需要重启svn服务
//查看svn服务详情
# ps aux | grep svn
790 ? 00:00:00 svnserve
//将svn服务强制停止 其中790为svn服务的ID号,-9是kill的参数
# kill -9 790
或者用:
# killall svnserve
再运行 svnserve -d -r /data/svn,进行启动服务
6、测试服务器:
//我们在web目录测试(/home/www)
# cd /root/www
# svn co svn://localhost/project
如果提示:Checked out revision 1.
表示checkout成功
我们添加新文件来测试是否提交成功
# cd /root/www
# touch index.php
# svn add index.php //成功的话会显示 A index.php
# svn commit index.php -m //"测试提交文件"
假如最后提示:
Adding index.php
Transmitting file data .
Committed revision 2.
则表示我们svn服务器搭建成功!文件已经能够推送了。
7、本地拉取、推送
在本地安装SVN,建立个文件夹,右键点检svn checkout...
点击ok,提示输入用户名和密码
就填刚才我们创建的lsvnuser1或lsvnuser2,和对应的密码即可。
三、实现svn更新自动同步到web目录:
1、在web目录中checkout 版本库
# svn co svn://localhost/project /root/www --username svnuser1 --111111
进入/data/svn/project/hooks下,建立post-commit文件:
# cd /data/svn/project/hooks
# vim post-commit
//在该文件里添加如下代码,保存
#!/bin/sh
#设定环境变量,如果没有设定可能会出现update报错
#设定语言,根据系统语言设置,如果是GBK就设置为 LANG=zh_CN.GBK
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn //这里不用改
WEB_PATH=/root/www/porject //web目录,如果你的不同,可以改
//这里的用户随便一个就好
$SVN_PATH update $WEB_PATH --username 'svnuser1' --password '111111' --no-auth-cache
保存退出,修改post-commit用户为www目录的用户,给past-commit执行权限:
# chmod 755 post-commit
即成功完成了。
测试:在本地电脑新建一个文件提交到版本库,查看/root/www/project目录下是否自动更新对应文件。
Linux svn的常用命令
()内为命令简写.
checkout (co) 提取
commit (ci) 提交
update (up) 更新
list (ls) 列表
Linux版本回滚操作
# svn up -r 1
日常维护命令和参数
启动svn服务
svnserve -d -r /data/svn
创建版本库
svnadmin create fs-type fsfs /data/svn/project
查看版本库的信息
svn list file:///data/svn/project
svn list –verbose file:///data/svn/project
导入库的目录结构
svn import /tmp/project/ file:///data/svn/project/ –message “init” (文件夹project下有bo)
删除版本库project下文件夹bo
svn delete svn://192.168.18.10/data/svn/project/bo -m “delete ”
//导出
$svnlook youngest oldrepo
$svnadmin dump oldrepo > dumpfile
//还原
$svnadmin load newrepo < dumpfile
停止subversion服务
ps –aux | grep svnserve
kill -9 ID号
建立SVN存储仓库示例
#mkdir -p /data/svn/repos
#svnadmin create –fs-type fsfs /data/svn/repos
备份以前的SVN库
#svnadmin dump /data/svn/repos > /root/repos2
把备份出来的数据恢复到本地
#svnadmin load /data/svn/repos/ < /root/repos2