当前位置:首页>Linux>Linux部署和使用SVN

Linux部署和使用SVN

  • 2026-09-22 02:51:01
Linux部署和使用SVN
Subversion(SVN)是一种高效的版本控制系统,允许团队成员协作编辑和管理代码、文档等文件。

SVN的首个公开版本是在2004年发布的1.0版本,由于其易于使用,强大的功能以及良好的跨平台支持,Subversion迅速被广泛使用。

SVN的主要特点包括:

文件锁定:SVN支持文件锁定,以避免多人编辑同一文件时产生的冲突。

分支和标签:支持有效地管理项目的分支和标签。

历史版本管理:可以追溯历史版本,并检出任意历史版本。

原子提交:提交操作要么全部成功,要么全部失败,保证数据的完整性。

网络透明性:SVN支持多种访问协议,包括本地文件系统、http/https、svn和file。

Subversion与CVS相比,添加了很多重要特性:

原子提交:SVN的提交是原子性的,而CVS的提交可能会被分割成多个部分,这在操作中断时可能导致不一致的仓库状态。

文件锁定:SVN有文件锁定功能,而CVS没有,这有助于避免多人同时编辑同一文件时的冲突。

效率:SVN使用更有效的数据传输和传输机制,特别是在处理大文件和大型项目时。

Subversion在某些方面可能不具备Git的分布式特性和灵活性,但是它的简单和成熟性使得很多组织仍然继续使用它。

Subversion的基本术语和工作原理:

基本术语解释:仓库、工作副本、版本号等。

仓库Repository:仓库是SVN中存储所有项目历史数据的地方。它包含了所有文件和目录的历史版本,以及他们之间变化的记录。

工作副本:工作副本是检出仓库中项目版本到本地磁盘上的副本。开发者在此副本上进行开发工作。

版本号:每个提交到仓库的更改都会被分配一个版本号。版本号是一个逐渐递增的整数,可以用来标识项目历史中的特定点。

修订集:修订集是指定范围内的多个版本号,可以用来执行操作,如查看多个版本之间的差异。

Subversion的工作原理:

Subversion使用的是集中式的工作模型。在这个模型中,所有的版本控制活动都围绕着一个集中的仓库进行。仓库包含了项目的主历史版本,而开发者在本地的工作副本中进行更改和提交。

工作流程通常如下:

1、检出Checkout: 用户从仓库respository检出文件到本地工作副本。

2、编辑Edit:在本地副本上进行文件编辑和修改。

3、 状态检查Status:用户可以检查本地副本的状态,了解哪些文件被修改了。

4、 提交Commit:修改后,用户可以将更改提交回仓库。SVN会检查是否有冲突,并且在没有冲突的情况下将更改保存为新的版本号。

5、 更新Update:在提交之前,用户可以更新他们的本地副本,以包含其他用户所做的更改。

6、解决冲突Resolve Conficts:如果两个用户同时修改了同一个文件,并且冲突无法自动解决,SVN会标识这些文件,需要用户手动解决冲突。

部署SVN:
第一种方式:
部署HTTP访问SVN
步骤一:安装SVN
1. 运行以下命令,安装SVN。
[root@svnserve ~]# yum install -y subversion
2. 查看SVN版本:
[root@svnserve ~]# svnserve --versionsvnserve, version 1.7.14 (r1542130)   compiled Sep 30 2020, 17:44:04Copyright (C) 2013 The Apache Software Foundation.This software consists of contributions made by many people; see the NOTICEfile for more information.Subversion is open source software, see http://subversion.apache.org/The following repository back-end (FS) modules are available:* fs_base : Module for working with a Berkeley DB repository.* fs_fs : Module for working with a plain file (FSFS) repository.Cyrus SASL authentication is available.
显示如上信息,说明SVN已经成功安装。
步骤二:安装Apache
1. 安装httpd:
[root@svnserve ~]# yum install -y httpd -y
2. 查看httpd版本:
[root@svnserve ~]# httpd -versionServer version: Apache/2.4.6 (CentOS)Server built:   May 30 2023 14:01:11
步骤三:安装mod_dav_svn
mod_dav_svn是ApacheHTTP服务器的一个模块,用于提供SVN(Subversion)版本控制系统的Web访问功能。
[root@svnserve ~]# yum install -y mod_dav_svn
步骤四:配置SVN
1. 创建SVN版本库
[root@svnserve ~]# cd /var/svn[root@svnserve svn]# svnadmin create /var/svn/svnrepos/
2. 将SVN仓库的用户组修改为apache
[root@svnserve svn]# chown -R apache:apache /var/svn/svnrepos
3. 查看自动生成的版本库文件:
[root@svnserve svn]# cd svnrepos[root@svnserve svnrepos]# lltotal 8drwxr-xr-x. 2 apache apache  54 Mar 12 14:47 confdrwxr-sr-x. 6 apache apache 233 Mar 12 14:47 db-r--r--r--. 1 apache apache   2 Mar 12 14:47 formatdrwxr-xr-x. 2 apache apache 231 Mar 12 14:47 hooksdrwxr-xr-x. 2 apache apache  41 Mar 12 14:47 locks-rw-r--r--. 1 apache apache 229 Mar 12 14:47 README.txt
4. 增加SVN版本库的用户和密码:
SVN默认使用的是明文密码,而HTTP不支持明文密码,所以需要单独生成passwd文件。在本例中,增加用户user1,密码设置为123456。
如果是第一次增加用户,运行命令时需要带上参数-c生成文件。
[root@svnserve svnrepos]# htpasswd -c /var/svn/svnrepos/conf/passwd user1New password: Re-type new password: Adding password for user user1
如果还需要添加用户,可以使用命令:
[root@svnserve svnrepos]# htpasswd /var/svn/svnrepos/conf/passwd user2New password: Re-type new password: Adding password for user user2
5. 进行conf目录:
[root@svnserve svnrepos]# lltotal 8drwxr-xr-x. 2 apache apache  54 Mar 12 14:47 confdrwxr-sr-x. 6 apache apache 233 Mar 12 14:47 db-r--r--r--. 1 apache apache   2 Mar 12 14:47 formatdrwxr-xr-x. 2 apache apache 231 Mar 12 14:47 hooksdrwxr-xr-x. 2 apache apache  41 Mar 12 14:47 locks-rw-r--r--. 1 apache apache 229 Mar 12 14:47 README.txt[root@svnserve svnrepos]# cd conf
6. 设置账号的读写权限:
打开文件控制文件:
vim authz
在文件的末尾添加代码
[/]user1 = rw
user1表示账号,r表示读权限,w表示写权限。
7. 修改SVN服务器配置文件:
vim svnserve.conf
删除配置行前面的注释符#和空格。
输入:wq保存并退出文件。
8. 启动SVN版本库:
启动命令直接指定到版本库:
[root@svnserve conf]# svnserve -d -r /var/svn/svnrepos/
如果显示如下信息:
svnserve: E000098: Can't bind server socket: Address already in use
则说明已经启动svnserve,需要杀进程。
9、 查看SVN服务是否开启:
[root@svnserve conf]# ps aux |grep svnserve
步骤五:配置Apache
1. 新增并编辑httpd配置文件:
[root@svnserve ~]# vim /etc/httpd/conf.d/subversion.conf
2. 在subversion.conf文件中输入以下配置文件:
<Location /svn>DAV svnSVNPath /var/svn/svnreposAuthType BasicAuthName "Authorization SVN"AuthzSVNAccessFile /var/svn/svnrepos/conf/authzAuthUserFile /var/svn/svnrepos/conf/passwdRequire valid-user</Location>
3. 启动Apache服务,并设置开机自启动:
[root@svnserve ~]# systemctl start httpd.service[root@svnserve ~]# systemctl enable httpd.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
浏览器访问:
结果可能会出现各种故障,即时排查问题,提升技能。
使用SVN管理代码的常见流程:
1、 Checkout: 提取代码到本地。
2、 其他人员修改并提交代码到Repository。
3、Update(获得最新代码)。
4、 修改调试成功源代码。
5、 Commit:提交修改后的代码Repository,其他人员可以看到修改。
提取源代码到本地:
1、下载TortoiseSVN客户端。
官网:tortoisesvn.cn
2. 安装TortoiseSVN客户端:
一路Next,安装成功。
3. 在本地项目文件夹(C:\Test)区域内单击鼠标右键,TortoiseSVN->Checkout。
4. 填写版本库URL,源代码统一存放的地址。
5、输入用户名和密码认证后, 也就是在passwd文件中设置的用户名和密码。
检出完成的示例如下:
6、 获取更新:
SVN服务端系统库上的项目更新后,可以选择Update,即可自动完成下载最新项目,并会显示所有更新内容。
6、 提交版本更新,输入Message版本更新信息,选中需要提交的操作内容。点击“OK”按钮,即可将本地项目提交到SVN服务器版本库中,覆盖资源库项目从而实现更新。
在弹框中可以看到Adding了test1.txt这个文件,并且Sending test1.txt文件。
7、再commit提交一个test2.txt文件。
在浏览器中可以看到有两个文件:
8、将test2文件删除。
9、 根据是否提交选择相应的操作:
未提交时,右键单击空白处,选择TortoiseSVN->Revert:
点击“OK”按钮,我们将test2.txt文件进行恢复。
如果已经提交了,服务端系统库中的数据已经同步了,系统也会将其保存的数据删除。
那么这个时候采用下面的方法进行数据还原。
1、选择TortoiseSVN->Show log查看操作日志:
在日志中,单击删除的日志行,下方会显示已删除的数据。
2、 右键单击已删除的数据,然后单击Save revision to...
可以看到本地文件已恢复。
3、 在Test文件夹中,单击Commit...,即可同步文件和系统数据库中的数据。

最新文章

随机文章