搭建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

posted @ 2019-08-14 14:48  Justtosee  阅读(294)  评论(0编辑  收藏  举报