在团队协作开发中,SVN(Subversion)作为一种常见的版本控制系统,能帮助我们有效管理代码的版本。本文将介绍如何在 Linux 系统上安装和配置 SVN 服务器,并给出一些常用的 SVN 客户端操作方法。
1. 环境准备
首先,确保系统软件包是最新的,这样可以避免一些可能的兼容性问题。
# Debian/Ubuntu 系统
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL 系统
sudo yum update -y
2. 安装 SVN
根据系统类型安装 SVN 服务:
# Debian/Ubuntu 系统
sudo apt install subversion -y
# CentOS/RHEL 系统
sudo yum install subversion -y
3. 创建 SVN 仓库
安装完成后,开始创建一个用于存储项目代码的 SVN 仓库:
# 创建仓库根目录
sudo mkdir -p /svn/myrepo
sudo svnadmin create /svn/myrepo
这样 /svn/myrepo
路径下就生成了一个新的 SVN 仓库。
4. 配置 SVN 仓库
SVN 仓库的配置主要在其 conf
子目录中完成,包含以下几个文件:
- svnserve.conf:配置基本仓库参数。
- passwd:存储用户和密码信息。
- authz:控制用户和用户组的权限。
4.1 配置 svnserve.conf
打开 svnserve.conf
文件,启用基本的访问控制设置:
sudo nano /svn/myrepo/conf/svnserve.conf
修改如下选项:
[general]
anon-access = none # 禁止匿名访问
auth-access = write # 允许授权用户读写
password-db = passwd # 使用 passwd 文件存储用户信息
authz-db = authz # 使用 authz 文件配置权限
realm = /svn/myrepo # 定义认证域
4.2 设置用户名和密码
编辑 passwd
文件,添加用户和密码:
sudo nano /svn/myrepo/conf/passwd
文件内容示例:
[users]
user1 = password1
user2 = password2
4.3 设置权限控制
编辑 authz
文件,为用户或用户组配置仓库访问权限:
sudo nano /svn/myrepo/conf/authz
示例配置:
[groups]
devs = user1, user2 # 定义用户组
[/]
@devs = rw # devs 组具有读写权限
* = # 其他用户无访问权限
5. 启动 SVN 服务
- 启动 SVN 服务
使用svnserve
命令启动 SVN 服务:
sudo svnserve -d -r /svn
其中 -d
参数表示以守护进程方式运行,-r
指定 SVN 根目录。
- 设置开机自启动
为了让服务在系统重启后自动启动,可以将上述命令添加到系统的启动文件中,例如/etc/rc.local
。
6. SVN 客户端使用
在配置好服务器端后,可以通过 SVN 客户端连接并操作 SVN 仓库。假设服务器 IP 地址为 192.168.1.100
,使用以下命令检查代码仓库:
svn checkout svn://192.168.1.100/myrepo
客户端将提示输入用户名和密码,连接成功后会将代码库下载到本地。
常用 SVN 命令
- 添加文件:将文件添加到版本控制,但还未提交到服务器。
svn add filename
- 提交更改:将本地的改动提交到服务器。
svn commit -m "提交说明"
- 更新代码:从服务器拉取最新的代码更新到本地。
svn update
- 查看状态:查看当前目录中文件的修改状态。
svn status
- 查看日志:查看代码库的提交历史。
svn log
7. 其他配置(可选)
7.1 备份和恢复
- 备份仓库:使用
svnadmin dump
命令创建备份文件。
svnadmin dump /svn/myrepo > /backup/myrepo.dump
- 恢复仓库:使用
svnadmin load
命令恢复备份文件。
svnadmin load /svn/myrepo < /backup/myrepo.dump
7.2 Web 浏览支持
如有需要,可以使用 Apache 的 mod_dav_svn
模块将 SVN 仓库通过 HTTP/HTTPS 方式访问,这样更方便浏览器访问代码库。
总结
本文介绍了在 Linux 系统上搭建和配置 SVN 服务器的步骤,涵盖了仓库创建、用户和权限配置、服务启动等关键内容,并介绍了 SVN 客户端的一些基本操作方法。希望本文能够帮助你在团队协作中更好地管理代码版本,提高开发效率。