centos8安装SVN,并且实现windows拉取更新站点代码

这个教程,不做分支的更新和分支到主干的合并。统一都布局到主干中。

准备:

项目目录:/www/wwwroot/xyz

SVN版本库文件夹:/www/svn

SVN版本库:/www/svn/pros

主干:/www/svn/pros/trunk

标签:/www/svn/pros/tags

一、安装宝塔

通过链接宝塔面板下载,免费全能的服务器运维软件复制宝塔的安装链接

二、通过宝塔创建站点

我这边的站点目录:/www/wwwroot/project

三、安装SVN

1、检测是否安装过subversion

rpm -qa | grep subversion

2、未安装subversion,安装subversion

yum -y install subversion

3、查看subversion版本号,存在则安装成功

svnserve --version

四、创建版本库

1、创建版本库目录文件夹(根据自己喜好创建),用来存放所以版本库

mkdir -p /www/svn

2、创建版本库

svnadmin create /www/svn/pros

//在svn文件夹下生成pros文件夹,该文件夹下包括了以下目录和文件:
//db目录:所有版本控制的数据存放文件。
//hooks目录:放置hook脚本文件的目录。
//locks目录:用来放置锁定数据的目录,用来追踪存取文件库的客户端。
//format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
//conf目录:仓库的配置文件,包括仓库的访问账号和权限等配置。
//README.txt:一个说明文件。

五、配置文件

1、修改passwd文件,配置访问账号密码:

[users]
zbg=zbg123

2、修改authz文件,配置用户权限:

[groups]
admin=zbg
[/]
@admin=rw

3、编辑svnserve.conf文件:

anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
realm=pros

六、启用SVN服务

1、启用服务

svnserve -d -r /www/svn/ --listen-host 0.0.0.0

2、停止svn服务

killall svnserve

3、查看svn服务是否启用

//一条记录说明未开启,两条记录才是开启
ps aux | grep svnserve

七、创建主干

//创建主干
svn mkdir -m "这是主干" file:///www/svn/pros/trunk
//创建分支---这个教程不用
svn mkdir -m "这是分支" file:///www/svn/pros/branches
//创建标签
svn mkdir -m "这是tag" file:///www/svn/pros/tag

八、项目导入同步

1、项目导入主干--也可以直接windows系统中直接上传

svn import -m "这是第一版本-备注说明" /www/wwwroot/xyz/ file:///www/svn/pros/trunk

2、初始化工作副本到项目中

//把主干的内容同步到项目目录文件夹下
svn checkout file:///www/svn/pros/trunk/ /www/wwwroot/xyz

//通过拷贝主干到分支中创建--这边不需要使用
svn copy -m "创建第一分支" file:///www/svn/pros/trunk/ file:// /www/svn/pros/branches/branch1

九、钩子创建

1、钩子配置:

#钩子路径:www/svn/pros/hooks/post-commit
#第一种写法
#!/bin/sh 
REPOS="$1"
TXN="$2"

#SVN服务路径
SVN=/usr/bin/svn
#SVN版本库
SVN_DATA=/www/svn/pros
#项目路径
WEBzhy=/www/wwwroot/xyz
#日志
DAY=`date +%Y-%m-%d`
LOGzhy=/www/svn/log/pros/svn_updata_$DAY.log
#编码
export LANG="zh_CN.UTF-8"
#export LANG="en_US.UTF-8"
CURDATE=`date`

echo "[$(date +'%Y-%m-%d %H:%M:%S')] Code Deployed at $CURDATE" >> $LOGzhy

svn update --username zbg --password zbg123 $WEBzhy >> $LOGzhy
#设置权限
chmod -R 777 $WEBzhy >> $LOGzhy

#有变动才更新文件
#for dir in `svnlook dirs-changed $SVN_DATA`
#do
#    $SVN update --username zbg --password zbg123 -N $WEBzhy/$dir >> $LOGzhy
#done
#chmod -R 777 $WEBzhy >> $LOGzhy


#第二种写法
#!/bin/sh

# 添加路径验证
SVN_PATH=/www/wwwroot/xyz
SVN_URL=svn://IP/pros/trunk

export LANG="zh_CN.UTF-8"
CURDATE=`date`
DAY=`date +%Y-%m-%d`
LOG_FILE=/www/svn/log/pros/svn_updata_$DAY.log

# 添加同步日志
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Starting sync from $SVN_URL to $SVN_PATH" >> $LOG_FILE

# 强制更新命令(添加错误处理)
svn cleanup $SVN_PATH --username zbg --password zbg123 2>> $LOG_FILE
svn update --force --username zbg --password zbg123 $SVN_PATH >> $LOG_FILE 2>&1

# 验证退出状态
if [ $? -eq 0 ]; then
    echo "Sync completed successfully" >> $LOG_FILE
else
    echo "Sync failed with error code $?" >> $LOG_FILE
fi

2、钩子权限设置

//设置钩子权限
chmod +x /www/svn/pros/hooks/post-commit
//查看钩子权限
ls -l /www/svn/pros/hooks/post-commit
#这种说明有权限:-rwxr-xr-x 1 www-data www-data 832 Jun 15 10:23 post-commit
# ↑ 这里的x表示有执行权限

十、windows拉取代码

//整个主干的文件
svn://IP/pros/trunk
//主干中指定文件夹
svn://IP/pros/trunk/addons

注:

1、宝塔安全中:需要开放3690端口
2、服务器安全策略:需要开放3690端口
3、开机自动启动SVN服务,需要创建服务文件
4、通过命令强制更新

# 1. 确认本地工作副本与主干关联状态(在项目根目录执行)
svn info
# 2. 强制更新工作副本(注意会覆盖本地修改)
svn update --accept theirs-full
# 3. 检查SVN地址是否指向主干(URL应包含/trunk路径)
svn info | findstr "URL"
# 4. 重新提交并添加提交注释(示例)
svn commit -m "强制同步到主干"
# 5. 查看提交历史验证(最后一条应为你的提交)
svn log -l 1

# 检查工作副本状态
svn info /www/wwwroot/xyz
# 清理工作副本
svn cleanup /www/wwwroot/xyz --remove-unversioned
#手动测试同步
svn update --force --username zbg--password zbg123/www/wwwroot/xyz
#查看最近提交记录
svn log /www/svn/pros-l 5


5、存在未提交的本地冲突(使用svn resolved解决冲突)

注:

1、关于提交代码提示.user.ini文件权限无法修改问题

#查看文件属性
lsattr 文件绝对路径
#如果文件属性有i或者a--删除
chattr -ia 文件绝对路径   #这时候提交就正常了
#如果想要恢复属性i或者a
chattr +ia 文件绝对路径

2、关于钩子配置完提示zh-CN.UTF-8不存在问题:要么修改为en_US.UTF-8,要么安装zh-CN.UTF-8

### 如何使用SVN客户端通过图形化界面最新代码 #### 使用TortoiseSVN最新代码Windows环境中,TortoiseSVN是一个常用的SVN客户端工具。以下是具体操作方法: 1. 打开已有的工作副本所在的文件夹。 2. 右击空白处,在弹出的菜单中选择 **“SVN Update”** 或者带有箭头向下的图标[^2]。 3. 如果存在更新的内容,则会显示进度条并提示成功完成更新。 此过程能够确保本地的工作副本与远程仓库保持一致。 ```powershell $svnExePath = 'C:\Program Files\TortoiseSVN\bin\svn.exe' if (Test-Path $svnExePath) { Write-Host "TortoiseSVN installed and available at $svnExePath" } else { Write-Host "TortoiseSVN is not installed, please run the installer." } ``` 上述脚本可用于验证TortoiseSVN是否已经正确安装于系统之中。 #### 使用RabbitVCS或RapidSVN最新代码 对于Linux用户或者偏好其他跨平台工具的人群来说,可以选择像RabbitVCS这样的插件集成到文件管理器中,亦或是独立运行的RapidSVN应用程序来执行相同的操作[^1]。 以RabbitVCS为例: 1. 在Nautilus(GNOME默认文件浏览器)或者其他支持该扩展的地方打开目标目录; 2. 单击鼠标右键找到版本控制选项卡内的 “Update” 功能项即可实现同步最新的更改至当前路径下[^5]。 #### Linux环境下利用命令行方式作为补充说明 虽然题目强调的是GUI手段,但是了解基本CLI指令同样重要。例如,在CentOS服务器上可以通过如下步骤初始化环境并与远端存储库交互[^4]: 1. 启动`svnserve`守护进程绑定指定位置的数据集: ```bash svnserve -d -r /home/svn/ ``` 2. 进入准备好的项目空间之后发出checkout请求获初始资料包: ```bash svn checkout file:///home/svn/repository_name ./project_directory ``` 3. 日常维护阶段只需定期调用update动作维持一致性状态: ```bash svn update ``` 以上即完成了基于不同操作系统之上借助专门设计出来的可视化辅助程序达成目的的同时也兼顾介绍了相对应的手工输入形式供参考学习之用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值