SVN

小德 2021-12-02 12:57:59
Categories: Tags:

SVN 教程

1 什么是 SVN?

1
2
3
4
5
6
7
8
1

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。

SVN相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。
互联网上免费的版本控制服务多基于Subversion。

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

2 SVN中的相关概念

1
2
3
4
5
SVN 的一些概念
repository(源代码库):源代码统一存放的地方
Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交):当你已经修改了代码,你就需要Commit到repository
Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

SVN运行图

3 SVN主要功能

1
2
3
4
5
6
7
8
9
10
11
12
1)目录版本控制
CVS 只能跟踪单个文件的历史, 不过 Subversion 实作了一个 "虚拟" 的版本控管文件系统, 能够依时间跟踪整个目录的变动。 目录和文件都能进行版本控制。

2)真实的版本历史
自从CVS限制了文件的版本记录,CVS并不支持那些可能发生在文件上,但会影响所在目录内容的操作,如同复制和重命名。除此之外,在CVS里你不能用拥有同样名字但是没有继承老版本历史或者根本没有关系的文件替换一个已经纳入系统的文件。在Subversion中,你可以增加(add)、删除(delete)、复制(copy)和重命名(rename),无论是文件还是目录。所有的新加的文件都从一个新的、干净的版本开始。

3)自动提交
一个提交动作,不是全部更新到了档案库中,就是不完全更新。这允许开发人员以逻辑区间建立并提交变动,以防止当部分提交成功时出现的问题。

4)纳入版本控管的元数据
每一个文件与目录都附有一組属性关键字并和属性值相关联。你可以创建, 并儲存任何你想要的Key/Value对。 属性是随着时间来作版本控管的,就像文件內容一样。

4 SVN 生命周期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1  创建版本库

版本库相当于一个集中的空间,用于存放开发者所有的工作成果。版本库不仅能存放文件,还包括了每次修改的历史,即每个文件的变动历史。

Create 操作是用来创建一个新的版本库。大多数情况下这个操作只会执行一次。当你创建一个新的版本库的时候,你的版本控制系统会让你提供一些信息来标识版本库,例如创建的位置和版本库的名字。

2 检出

Checkout 操作是用来从版本库创建一个工作副本。工作副本是开发者私人的工作空间,可以进行内容的修改,然后提交到版本库中。


3 更新

顾名思义,update 操作是用来更新版本库的。这个操作将工作副本与版本库进行同步。由于版本库是由整个团队共用的,当其他人提交了他们的改动之后,你的工作副本就会过期。

4 解决冲突

合并的时候可能会发生冲突。Merge 操作会自动处理可以安全合并的东西。其它的会被当做冲突。例如,"hello.c" 文件在一个分支上被修改,在另一个分支上被删除了。这种情况就需要人为处理。Resolve 操作就是用来帮助用户找出冲突并告诉版本库如何处理这些冲突。

5 提交更改

Commit 操作是用来将更改从工作副本到版本库。这个操作会修改版本库的内容,其它开发者可以通过更新他们的工作副本来查看这些修改。

在提交之前,你必须将文件/目录添加到待变更列表中。列表中记录了将会被提交的改动。当提交的时候,我们通常会提供一个注释来说明为什么会进行这些改动。这个注释也会成为版本库历史记录的一部分。Commit 是一个原子操作,也就是说要么完全提交成功,要么失败回滚。用户不会看到成功提交一半的情况。

5 SVN服务器 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1 服务器下载地址:  博客 https://blog.csdn.net/HeyShHeyou/article/details/87979276

1.首先来下载和搭建SVN服务器,

下载地址如下: http://subversion.apache.org/packages.html,

进入网址后,滚动到浏览器最底部看到如下截图:

下载: VisualSVN server
个人认为最好用VisualSVN server 服务端和

TortoiseSVN客户端搭配使用. 点开上面的VisualSVN连接,下载VisualSVN server,下载完成后双击安装,如下图:

服务端口如果占用,改为 8443.



2 拿到服务器安装包之后,安装。

安装好之后,会在 环境变量中 自动 在 path 中添加 bin 目录。 D:\D\Subversion\bin

环境变量的意思就是: 你可以 在任意命令行 下面 直接运行你的命令, 会自动拼接头部 文件中所带的 目录。

svn --version


3 可以在服务器管理界面,新建仓库。

4 安装服务器 之后,可以新建 用户,新建 组。



服务器下载地址: 下载可以配置的数据库

SVNServer下载

6 SVN客户端安装

1
2
3
4
5
6
7
8
9
SVN 客户端下载 地址 如上图所示:


http://subversion.apache.org/packages.html


https://tortoisesvn.net/downloads.html

下载的时候,客户端 和 客户端 语言支持包可以一起下载。

svn简体中文支持

同学们 如果 自己做,可以只在 自己电脑上 安装 客户端,在 服务器上 安装 服务端就可以。

7 SVN 操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1 在服务器上自己创建 一个 仓库。名字 自己起,如 lpcRepositories, 建的 仓库中,可以存放多个 项目 。建文件夹即可。

查看 仓库对应的文件夹的名字。

conf: 配置信息,登录权限密码

db: 数据库文件

hooks: 勾子文件保存地方

locks: 锁的日志信息

要保证服务器启动: 可查看 是否启动了监听的 端口: netstat -an

2 在客户端检出: svn服务器中的 项目。

原始命令: svn checkout

用客户端检出: 注意: 检出之后有一个 隐藏文件。 .svn 文件,不要 动这个文件。


3 客户端 更新 查看 等操作。

时光机: 回退到某个版本。

查看历史版本: 显示日志。

更新到某个版本: 更新至版本.


4 对于冲突的解决,对于两个 用户,对于 相同的 一行 文件,做操作,两个人都去提交,会有冲突。

经常的操作是,先更新,再提交。

5 解决冲突。

编辑一样的文件。 先使用他们的,先使用我的。等。编辑。

SVN冲突解决

8 SVN 用户,组,仓库权限。

1
2
3
4
在仓库的 服务器端操作。

可以设置用户密码,组,权限。

9 IDEA中集成SVN

1
2


image-20210623192123468

idea集成svn

1
https://www.cnblogs.com/blogchen/articles/9040211.html