部署SVN服务器
虽然 Git 已经满足代码版本托管, 但是对于美术/策划等工作来说没必要搞什么代码托管或者版本管理, 只需要不断推送就行了.
这里基于
debian系统安装
# 安装 subversion 软件
sudo apt install -y subversion
# 之后创建版本库
sudo mkdir /svn && cd /svn
生成版本库
这里多版本库首先定义好子版本库, 以后不断扩展不同版本库:
# 创建子版本库 code
sudo mkdir -p /svn/code && cd /svn/code
# 生成版本库
sudo svnadmin create /svn/code
# 没问题就含有以下文件目录:
# conf
# db
# format
# hooks
# locks
# README.txt
这里主要修改配置文件 conf:
conf/authz: 权限控制conf/passwd: 账号密码文件conf/svnserve.conf: 服务器配置文件
首先修改账号密码文件( conf/passwd ):
[users]
# 账号 = 密码
meteorcat = meteorcat
之后就是追加权限 ( conf/authz ):
# 这里以 '/' 为根结点, 可以衍生后续多个目录权限限制
[/]
# meteorcat 对 /code 具有读写权限
meteorcat = rw
最后就是服务文件 ( conf/svnserve.conf ):
# 注意配置前面不要有空格
anon-access = none # 匿名用户不给可读
auth-access = write # 授权用户可写
password-db = passwd # 密码配置文件
authz-db = authz # 权限分组文件
realm = /svn/code # 代码库所在目录
配置编写之后还不要启动服务, 因为还需要做好安全权限配置.
安全配置
这里需要判断下 svn 账户是否存在, 如果没有的话需要创建:
# 如果没有创建 svn 需要创建账号
sudo useradd -r -s /bin/false svn
# 之后需要将版本库授权给 svn
sudo chown -R svn:svn /svn
最后编写系统启动文件:
# 编写泛用配置文件
sudo vim /etc/systemd/system/[email protected]
[email protected] 的配置文件内容:
[Unit]
Description = Subversion Protocol Daemon: %i
After = network.target
[Service]
User = svn
Group = svn
Type = forking
PIDFile = /run/svnserve/svnserve-%i.pid
EnvironmentFile = /etc/default/svnserve.d/%i
ExecStart = /usr/bin/svnserve $DAEMON_ARGS
KillMode = control-group
Restart = on-failure
[Install]
WantedBy = multi-user.target
生成下以下配置文件:
# 生成配置目录
sudo mkdir /etc/default/svnserve.d
# 生成加载环境配置文件
sudo vim /etc/default/svnserve.d/code
code 文件内容:
# svnserve options
# 如果想修改端口可以追加 --listen-port=9999 配置
DAEMON_ARGS = "--daemon --pid-file /run/svnserve/svnserve-code.pid --root /svn/code"
最后就是启动服务命令等
# 先创建 pid 目录
sudo mkdir -p /run/svnserve
sudo chown -R svn:svn /run/svnserve
# 启动 code 服务组
sudo systemctl start [email protected]
# 开机默认启动
sudo systemctl enable [email protected]
最后下载小乌龟默认访问下 svn://地址/(默认端口3690):
# 命令行指令
svn checkout svn://127.0.0.1/ --username xxx --password yyy
下载地址:
TortoiseSVN(小乌龟),SourceForge(备用)
Hook脚本
用于提交后自动拉取部署, 主要采用 post-commit 文件拉取最新版本, 注意先 passwd 创建好拉取账号密码;
对应的模板配置文件放置于版本库 xxx/hooks/post-commit.tmpl