在 CentOS 7.2 系统上部署 Subversion(SVN)版本控制系统,是许多开发团队进行代码管理和协作的常见选择,SVN 作为一款集中式的版本控制工具,能够有效追踪文件和目录的每一次修改,为项目提供可靠的历史记录和回滚机制,本文将详细介绍在 CentOS 7.2 环境下安装、配置及使用 Subversion 的完整流程。
安装 Subversion
确保您的 CentOS 7.2 系统已连接到互联网,并且拥有 root 或 sudo 权限,安装过程非常直接,可以通过 yum
包管理器一键完成。
打开终端,执行以下命令来安装 Subversion 及其相关模块:
yum install subversion -y
该命令会自动从官方软件源下载并安装最新稳定版的 Subversion,安装完成后,可以通过以下命令验证是否安装成功:
svnserve --version
如果终端能够正确显示 svnserve
的版本信息,则表示 Subversion 已成功安装到您的系统中。
创建与配置版本库
版本库是 SVN 存储所有项目文件和历史记录的核心,我们需要创建一个专门的目录来存放版本库,并对其进行初始化。
创建版本库目录
我们将版本库存放在/var/svn/
目录下,创建一个名为project1
的项目版本库:mkdir -p /var/svn/project1 svnadmin create /var/svn/project1
执行
svnadmin create
命令后,project1
目录下会生成一系列配置文件和子目录,如conf
、db
、hooks
等。配置版本库
所有配置文件都位于conf
目录下,我们需要修改其中的三个关键文件:svnserve.conf
、passwd
和authz
。
这是主配置文件,用于控制版本库的访问权限,使用编辑器打开/var/svn/project1/conf/svnserve.conf
,修改以下几行(去掉行首的注释符 和空格):[general] # 禁止匿名访问 anon-access = none # 授权用户可读写 auth-access = write # 指定密码文件路径 password-db = passwd # 指定权限控制文件路径 authz-db = authz # 指定版本库的认证域 realm = project1 Repository
此文件用于存储用户名和密码(明文存储,请注意服务器安全),编辑/var/svn/project1/conf/passwd
,在[users]
标签下添加用户:[users] user1 = password123 user2 = password456
此文件用于精细地控制用户或用户组对版本库特定路径的访问权限,编辑/var/svn/project1/conf/authz
,设置权限规则:[groups] # 定义用户组 dev_team = user1, user2 [project1:/] # 给 dev_team 组读写权限 @dev_team = rw # 其他用户无任何权限 * =
启动与管理 SVN 服务
配置完成后,就可以启动 SVN 服务了。svnserve
是 SVN 的独立守护进程,默认监听 3690 端口。
执行以下命令以守护进程模式启动服务,并指定版本库的根目录:
svnserve -d -r /var/svn/
-d
表示以守护进程模式运行。-r /var/svn/
指定版本库的根目录,这样客户端访问时可以直接使用svn://your_server_ip/project1
的格式,而无需提供完整路径。
可以使用 ps -ef | grep svnserve
或 netstat -antp | grep 3690
命令来检查服务是否已成功启动并监听端口。
为了确保服务器重启后 SVN 服务能自动运行,建议将其添加到系统服务中,可以创建一个 systemd
服务文件,或者将启动命令写入 /etc/rc.d/rc.local
文件中。
客户端访问
在客户端机器上,可以使用 TortoiseSVN(Windows)或命令行工具来访问版本库,首次使用时,需要将代码“检出”到本地:
svn checkout svn://your_server_ip/project1 --username user1
系统会提示输入密码,成功检出后,就可以在本地目录中进行文件的增加、删除和修改,然后通过 svn commit
命令将更改提交到服务器,或通过 svn update
命令获取服务器上的最新版本。
为了方便查阅,以下是核心操作和文件的小编总结:
操作/文件 | 命令/路径 | 描述 |
---|---|---|
安装SVN | yum install subversion -y | 使用yum包管理器安装Subversion |
创建版本库 | svnadmin create /path/to/repo | 在指定路径初始化一个新的SVN版本库 |
主配置文件 | /repo/conf/svnserve.conf | 设置访问模式、密码和权限文件路径 |
用户密码文件 | /repo/conf/passwd | 存储用户名和密码的明文文件 |
权限控制文件 | /repo/conf/authz | 定义用户或组对仓库路径的读写权限 |
启动服务 | svnserve -d -r /var/svn/ | 以守护进程模式启动SVN服务 |
相关问答FAQs
问题1:我忘记了某个SVN用户的密码,该如何重置?
解答: SVN的用户密码以明文形式存储在版本库 conf
目录下的 passwd
文件中,您只需要直接编辑该文件(vi /var/svn/project1/conf/passwd
),找到对应的用户行,将其密码修改为您想要的新密码即可,修改后保存文件,新的密码会立即生效,无需重启 svnserve
服务。
问题2:如何设置一个用户只能读取代码,而不能提交任何修改?
解答: 这需要通过修改 authz
权限控制文件来实现,在 /var/svn/project1/conf/authz
文件中,为特定用户或用户组分配 r
(只读)权限,而不是 rw
(读写)权限,要让用户 user2
对 project1
仓库只有只读权限,可以这样配置:
[project1:/] user1 = rw user2 = r * =
这样,user1
可以读写,而 user2
只能执行 svn checkout
和 svn update
等读取操作,无法执行 svn commit
。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复