【解决方案】Linux SVN 版本管理 搭建

配置环境

阿里云Linux - 网络环境:专有网络。
本文讲述个人的做的步骤。非绝对正确理论科普。

安装SVN服务器

yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql

验证安装

cd /etc/httpd/modules
ls | grep svn
mod_authz_svn.so
mod_dav_svn.so

查看版本

svnserve --version

代码库创建:

安装完成后要建立SVN库

mkdir -p /opt/svn/repositories
svnadmin create /opt/svn/repositories

执行后,自动建立repositories库,查看/opt/svn/repositories文件夹包含了conf,db,format,hooks,locks,README.txt等文件,说明一个SVN库已经建立。

配置版本库:

进入上面conf文件夹下,进行配置:

用户密码passwd配置:

vim + passwd //+表示光标放在文件最低端

修改passwd为以下内容:

[users]
harry = harryssecret
sally = sallyssecret
clw=clw888

权限控制authz配置:

vim + authz

设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

[/]
clw=rw //给该用户访问所有库的权限

[repositories:/project] //repository库的根目录权限
zhoulf=rw

/ 表示根目录及以下,根目录是svnserve启动时指定的,我们指定的是/opt/svn;/ 就是指对全部版本库都具有权限
repositories:/ 表示对库repositories的根目录设置权限

PS:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。

服务svnserve.con配置:

vim + svnserve.conf

添加以下内容:

[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
#使授权用户有写权限
auth-access=write
#密码数据库的路径
password-db=passwd
#访问控制文件
authz-db=authz


认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm= /opt/svn/repositories
填的是版本库目录( /home/svndata/ecos/)

use-sasl = true 这个要注释上,还不知道 sasl 这个服务是什么。
———————-这一步直接解开原来文件的注释修改就可以了。

SVN 操作命令

a. 启动SVN

svnserve -d -r /opt/svn/repositories

b. 查看SVN进程

ps -ef|grep svn|grep -v grep

root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /opt/svn/repositories

c. 检测SVN端口

netstat -ln |grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN

d. 停止重启SVN:

killall svnserve //停止
svnserve -d -r /opt/svn/repositories // 启动

e. 如何线上线下同时运行版本库代码。

逻辑是,在服务器网站根目录检出 版本库代码,创建一个工作副本。
最后让该目录自动更新就可以了。

以上就在服务器配置了一个版本库,并在可以在本地检出代码,各个客户端更新代码到版本库都可以更新到。

步骤整理

这里是指定了做版本管理的几个文件夹。域名请自动替换成自己的路径,如果是整个项目的管理,执行一遍即可。

第一步、

把网站根目录代码 导入到版本库,让版本库有代码。做为最初版本的代码。
# svn import /home/wwwroot/ecos/app file:///home/svndata/ecos/app/ -m “Initial import”

# svn import /home/wwwroot/ecos/custom file:///home/svndata/ecos/custom/ -m “Initial import”

# svn import /home/wwwroot/ecos/public/app file:///home/svndata/ecos/public/app -m “Initial import”

第二步、

删除网站根目录的 以上三个文件目录。

rm -rf ./app ./custom ./public/app/

第三步、

检出版本库代码到网站目录项目 // 这里是指定了做版本管理的文件夹。域名请自动替换成自己的路径

svn co –username admin –password Aadmin888 svn://120...174/ecos/app /home/wwwroot/ecos/app/

svn co –username admin –password Aadmin888 svn://120...174/ecos/custom /home/wwwroot/ecos/custom/

svn co –username admin –password Aadmin888 svn://120...174/ecos/public/app /home/wwwroot/ecos/public/app

第四步、

来到版本库的 hooks 目录,
vim post-commit 创建这个文件,并赋予这个文件用户的可执行权限。

>

!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn up /home/wwwroot/ecos/custom --username admin --password Aadmin888
svn up /home/wwwroot/ecos/app --username admin --password Aadmin888
svn up /home/wwwroot/ecos/public/app --username admin --password Aadmin888

第五步、

重启SVN 服务。去本地跟新代码,并且上传测试即可。

killall svnserve //停止
svnserve -d -r /home/svndata// 启动

结束语【附图】

主要是逻辑理解了就简单了。附一份逻辑图。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/cuiliwu/article/details/80882905