SVN 安装与使用

目录

​宝塔安装 SVN 服务并自动更新到 web 站点

1、宝塔根目录创建svn文件夹

2、用Xshell在根目录运行命令安装svn:

3、创建版本库:

4、进去cscrm下的conf目录编辑配置文件

5、配置钩子:让代码同步自动更新带 WEB 项目目录

6、去到项目目录上一层,一般是 www/wwwroot 下,运行首次更新命令:

7、本地计算机检出仓库项目

8、检出后,在提交更新,如果提交后,服务器没有自动更新,就再执行一次第6步

windows搭建SVN服务 与 自动更新站点

1、安装 VisualSVN Server

2、创建版本库

 3、关联项目

自动更新到站点

​编辑

问题:如遇到客户端推送报错

设置忽略文件

提交指定文件


​宝塔安装 SVN 服务并自动更新到 web 站点

1、宝塔根目录创建svn文件夹

SVN 安装与使用_第1张图片

2、用Xshell在根目录运行命令安装svn:

①、查看命令:

rpm -aq subversion

②、安装命令:

yum -y install subversion

③、卸载命令:

yum remove subversion

④、停止命令:

killall svnserve

⑤、启动命令:

svnserve -d -r /svn

3、创建版本库:

svnadmin create /svn/cscrm

①、会自动创建cscrm目录,并有一些配置文件

SVN 安装与使用_第2张图片

4、进去cscrm下的conf目录编辑配置文件

SVN 安装与使用_第3张图片

①、配置访问账号:authz文件

括号中是指哪个仓库,在此处指的是cscrm仓库,/代表当前仓库下的所有文件

格式:账户 = 权限,等号两边留一个空格,r:读,w:写

例:testuser = rw    

SVN 安装与使用_第4张图片

②、配置访问密码:passwd文件

在 [users] 块中添加用户和密码

格式:帐号 = 密码 (等号两边留一个空格)

例:testuser = 123456

SVN 安装与使用_第5张图片

③、配置仓库配置文件:svnserve.conf

找到以下代码,直接去掉前面的 ##(代码顶行)

anon-access = read

auth-access = write

password-db = passwd

authz-db = authz

realm = 版本仓库所在目录

SVN 安装与使用_第6张图片

5、配置钩子:让代码同步自动更新带 WEB 项目目录

进去cscrm下的hooks目录新建一个 post-commit 配置文件,或者复制上面的 post-commit.tmpl 去掉 .tmpl 后缀并清空里面的内容,修改文件权限为 777

SVN 安装与使用_第7张图片

①、添加内容:

#!/bin/sh

REPOS="$1"

REV="$2"

export LC_ALL="zh_CN.UTF-8"

export LANG="en_US.UTF-8"

SVN_PATH=/usr/bin/svn

WEB_PATH=/www/wwwroot/cscrm

SVN_USER=kangnjy

SVN_PASS=123456

LOG_PATH=/svn/cscrm/svn.log

echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH

echo `whoami`,$REPOS,$REV >> $LOG_PATH

echo `****************************************` >> $LOG_PATH

echo `****************************************` >> $LOG_PATH

$SVN_PATH update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH

exit 0

②、前面内容说明:

WEB_PATH=/www/wwwroot/cscrm/        #WEB网站的根目录   

SVN_USER=kangnjy                    #cscrm仓库的账号(有多个的话随便填写一个就好)

SVN_PASS=123456                     #cscrm仓库的密码(有多个的话随便填写对应账号的密码)

LOG_PATH=/svn/cscrm/svn.log         #svn日志(需要在/svn/cscrm下面新建一个svn.log的文件)

SVN 安装与使用_第8张图片

6、去到项目目录上一层,一般是 www/wwwroot 下,运行首次更新命令:

svn checkout svn://localhost/cscrm --username kangnjy --password 123456

注:localhost也可以替换成服务器IP,cscrm为版本仓库名称,后面加上账号密码运行后就不用再输入,不加的话运行 svn checkout svn://localhost/cscrm 后就要输入账号密码。

运行上面命令后,会自动创建一个 cscrm 文件夹,里面只有一个 .svn 文件

7、本地计算机检出仓库项目

在项目目录右键检出,填写:svn://ip/仓库名称,然后提示要输入仓库账号和密码,就是上面配置的

SVN 安装与使用_第9张图片

SVN 安装与使用_第10张图片

8、检出后,在提交更新,如果提交后,服务器没有自动更新,就再执行一次第6步

SVN 安装与使用_第11张图片

注:遇到了不自动更新问题,解决了很久,最后成功了,做了以下动作,也不知道具体是哪一个解决的,记录下:

1、改了 post-commit 文件权限从 755 改为了 777  -- 已测试 755 也可以

2、钩子文件第一行加了:#!/bin/sh

3、钩子文件最后一行加了:exit 0

4、改了钩子文件中的配置,如下:

SVN_PATH=/usr/bin/svnserve

改为:

SVN_PATH=/usr/bin/svn

之前用下面命令查看的svn安装目录是/usr/bin/svnserve,但不知道是改后也能用还是才能用,以后再测试

which svnserve

windows搭建SVN服务 与 自动更新站点

1、安装 VisualSVN Server

准备一台用作搭建服务的主机

TortoiseSVN(客户端):官网下载

 VisualSVN Server(服务端):官网下载

Location:安装目录

Repositories:版本库目录

Backups:备份目录

SVN 安装与使用_第12张图片

2、创建版本库

打开安装好的 VisualSVN Server

在 Repositories 右键 -- 新建 -- Repository...

SVN 安装与使用_第13张图片

 SVN 安装与使用_第14张图片

 输入项目名

SVN 安装与使用_第15张图片

第一项:创建空目录,第二项:创建三个默认文件目录

SVN 安装与使用_第16张图片

 SVN 安装与使用_第17张图片

 SVN 安装与使用_第18张图片

 SVN 安装与使用_第19张图片

 项目上右键复制版本库url(第一次会提示创建用户)

SVN 安装与使用_第20张图片

 3、关联项目

在项目目录右键检出

SVN 安装与使用_第21张图片

 检出项目(需要填写前面创建的用户密码)

 SVN 安装与使用_第22张图片

 SVN 安装与使用_第23张图片

 SVN 安装与使用_第24张图片

右键 -- 提交

 SVN 安装与使用_第25张图片

在服务端刷新查看提交成功

SVN 安装与使用_第26张图片

关联后 

正常操作是先 SVN更新 -- SVN提交

自动更新到站点

1、在svn服务端E盘拉取项目

svn co https://DESKTOP-0MD5559/svn/test11/

2、进入项目仓库版本目录的 hooks 文件夹下(里面的 tmpl 文件是一些参考模板)

找到 post-commit.tmpl 复制一份,修改后缀为 bat

SVN 安装与使用_第27张图片

提前配置好 svn 的环境变量(在系统变量path添加svn的安装目录D:\SVN\Location\bin)

WORKING_COPY -- 前面拉取的站点目录

username -- svn用户名

password -- svn密码

@echo off  
SET REPOS=%1  
SET REV=%2  
SET DIR=%REPOS%/hooks  
SET PATH=%PATH%;  
SET WORKING_COPY=E:/test11
svn update %WORKING_COPY% --username admin --password 123456

用户名 -- 右键可修改密码

SVN 安装与使用_第28张图片

3、保存后,可以在控制台运行测试

如下更新成功(推送指定仓库成功)

如果报 svn: E155007: 错误:就是没有找到目录(也就是没有包含 .svn 的文件夹),修改上面的 WORKING_COPY 为拉取的站点目录即可

SVN 安装与使用_第29张图片

 至此即可在客户端提交后,服务端经过 post-commit 钩子同步到关联站点

问题:如遇到客户端推送报错

svn: E200031: sqlite[S8]: attempt to write a readonly database

原因是Visual SVN Server服务的执行权限不够,不能对指定目录做读写操作。

解决办法:

win+R 运行 services.msc 打开服务(也可从任务管理器 -- 服务 -- 打开服务)

找到 VisualSVN HTTP Service 服务 右键 -- 属性 -- 登陆 -- 选择本地系统账户,勾选允许服务与桌面交互;

保存后试下

参考:svn配置post-commit钩子 - 掘金

windows 下svn post-commit 无法同步更新的问题_51CTO博客_svn没有update和commit

设置忽略文件

1、在文件上面右键

去除版本控制并增加到忽略列表

SVN 安装与使用_第30张图片

 2、批量忽略

在项目根目录右键 -- TortoiseSVN -- 属性 -- 新建 -- 其它 -- 属性选择 svn:ignore

SVN 安装与使用_第31张图片

 3、全局配置

在项目根目录右键 -- TortoiseSVN -- 设置 -- 常规设置

SVN 安装与使用_第32张图片

提交指定文件

初次提交指定文件(文件比较多时)可使用此方法

# --------- #

文件少可以在提交时按需选择提交

SVN 安装与使用_第33张图片

end 结束

参考

宝塔面板搭建SVN项目管理服务器并自动更新至WEB目录 - 白与黑 ~ 个人博客

解决自动更新问题参考

post-commit hook failed (exit code 255) with no output 解决方案 - belaytech - 博客园

window客户端使用SVN

TortoiseSVN教程级别指南 - 简书

提交忽略参考

SVN如何批量忽略文件和文件夹_chensheng8085497的博客-CSDN博客_svn忽略文件夹

你可能感兴趣的:(版本管理,svn,服务器,linux,windows)