#导入MD文档图片#一步一步搭建Svn服务之windows
  Lb78AVwchy8f 2023年11月02日 65 0

这是一篇关于讲解SVN的入门文章,可以让0基础的你,在windows环境下安装搭建属于自己的SVN服务。程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。如果扩展的话,可以利用SVN快速搭建个人云笔记,百度上这方面的文章非常多,感兴趣的可以自己搜搜。

一、什么是SVN

H3SVN全称Subversion ,是个开放源代码的版本控制系统,Subversion在2000年由CollabNet Inc开发,现在发展成为Apache软件基会的个项,同样是个丰富的开发者和户社区的部分。SVN是个开放源代码的版本控制系统,管理着随时间改变的数据。这些数据放置在个资料档案库(repository)中。这个档案库很像个普通的件服务器,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网络访问它的版本库,从而使用户在不同的电脑上进行操作。说得简单点SVN就是于多个共同开发同一个项目,实现共用资源。

二、主要作用

1、录版本控制

Subversion实现了一个"虚拟"的版本控管文件系统, 能够依时间跟踪整个录的变动。 目录和文件都能进版本控制。

2、真实的版本历史

Subversion中,可以增加(add)、删除(delete)、复制(copy)和重命名(rename),论是文件还是目录。所有的新加的文件都从一个新的、干净的版本开始。

3、自动提交

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

三、基本概念

1、Repository(源代码库)

源代码统一存放的地

2、Checkout(提取)

当你手上没有源代码的时候,你需要从repository中checkout一份

3、Commit(提交)

当你已经修改了代码,你就需要Commit到repository

4、Update(更新)

当你已经Checkout了一份源代码,Update后就可以和Repository上的源代码同步

四、工作流程

1、开始新一天的作

a、从服务器下载项目组最新代码(Checkout)

b、如果已经Checkout并且有人已Commit了代码,你可以更新以获得最新代码(Update)

c、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时修改了哪些代码,就需要这样做了)(Commit)

d、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器(Commit)

2、注意

如果两个程序员同时修改了同一个文件,SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两个修改。 如果是同一行,SVN会提示文件Confict,冲突,需要手动确认。

3、流程示意图

#导入MD文档图片#一步一步搭建Svn服务之windows_git

五、生命周期

1、创建版本库

版本库相当于一个集中的空间,用于存放开发者所有的工作成果。版本库不仅能存放文件,还包括了每次修改的历史,即每个文件的变动历史。 Create操作是用来创建一个新的版本库。大多数情况下这个操作只会执行一次。当你创建一个新的版本库的时候,你的版本控制系统会让你提供一些信息来标识版本库,例如创建的位置和版本库的名字。

2、检出

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

3、更新

顾名思义,update操作是用来更新版本库的。这个操作将工作副本与版本库进行同步。由于版本库是由整个团队共用的,当其他人提交了他们的改动之后,你的作副本就会过期。让我们假设Tom和Jerry是一个项目的两个开发者。他们同时从版本库中检出了最新的版本并开始工作。此时,工作副本是与版本库完全同步的。然后,Jerry很高效的完成了他的工作,并提交了更改到版本库中。 此时Tom的工作副本就过期了。更新操作将会从版本库中,拉取Jerry的最新改动,并将Tom的工作副本进更新。

4、执变更

当检出之后,你就可以做很多操作来执行变更。编辑是最常的操作,你可以编辑已存在的文件夹,例如进行文件的添加/删除操作。 你可以添加文件/目录。但是这些添加的文件目录不会立刻成为版本库的一部分,而是被添加进待变更列表中,直到执行了commit 操作后,才会成为版本库的一部分。同样你可以删除文件/目录。删除操作立刻将文件从工作副本中删除掉,但该文件的实际删除,只是被添加到了待变更列表中,直到执行了commit 操作后,才会真正删除。Rename操作可以更改文件/目录的名字。"移动"操作用来将文件/目录从一处移动到版本库中的另一处。

5、复查变化

当你检出工作副本或者更新工作副本后,你的工作副本就跟版本库完全同步了。但是当你对工作副本进行一些修改之后,你的工作副本会比版本库要新。在commit操作之前,复查一下你的修改,这是一个很好的习惯。 Status操作列出了工作副本中所进行的变动。正如我们之前提到的,你对工作副本的任何改动,都会成为待变更列表的一部分。Status操作就是用来查看这个待变更列表。 Status操作只是提供了一个变动列表,但并不提供变动的详细信息。你可以用diff操作来查看这些变动的详细信息。

6、修复错误

我们来假设你对工作副本做了许多修改,但是现在你不想要这些修改了,这时候revert操作将会帮助你。Revert操作重置了对工作副本的修改。它可以重置一个或多个文件/目录。当然它也可以重置整个工作副本。在这种情况下,revert操作将会销毁待变更列表,并将工作副本恢复到原始状态。

7、解决冲突

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

8、提交更改

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

七、SVN服务器搭建和使用

使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多,VisualSVN Server是免费的。 对应的安装包,我已经上传到百度网盘中了,永久分享,大家可以自动下载(盘换成拼音) 链接:https://盘.baidu.com/s/1f__AcVAkqAo3EzFNvFhGwA 提取码:feig 大家也可以去官方下载,练习一下,如下给出官方下载方式。

1、官方下载Svn Server软件

下载地址如下: http://subversion.apache.org/packages.html,进入网址后,滚动到浏览器最底部,看到如下截图:

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_02

根据自己的操作系统,下载对应的版本,我这里是64位操作系统,我下载的是图形界面的版本。

2、安装VisualSVN Server

双击安装程序VisualSVN-Server-4.2.1-x64.msi

#导入MD文档图片#一步一步搭建Svn服务之windows_git_03

勾选复选框选择同意,然后选择Next

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_04

选择 VisualVSN服务器和管理控制台

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_05

设置服务器的安装路径、资源的存放目录及端口。端口号可以任意定义,对于HTTPS的端口号默认可以选择443和8443,对于HTTP默认可以选择80、8080和81。记住此处你配置的仓库位置,后期如果有配置操作,会来到这配置。

#导入MD文档图片#一步一步搭建Svn服务之windows_git_06

指定身份验证方式,默认设置使用svn身份验证即可

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_07

开始安装

#导入MD文档图片#一步一步搭建Svn服务之windows_java_08

如果出现这个弹窗,选择Ignore忽略即可(不一定会出现)

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_09

等待安装,安装完成后可勾选复选框,然后选择Finish

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_10

启动SVN来到主界面

#导入MD文档图片#一步一步搭建Svn服务之windows_git_11

修改网络配置

#导入MD文档图片#一步一步搭建Svn服务之windows_java_12

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_13

3、新建一个Repository代码库

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_14

#导入MD文档图片#一步一步搭建Svn服务之windows_java_15

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_16

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_17

#导入MD文档图片#一步一步搭建Svn服务之windows_java_18

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_19

创建完代码库后,里面没有任何内容

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_20

4、安全性设置

4.1、创建1个用户

#导入MD文档图片#一步一步搭建Svn服务之windows_java_21

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_22

#导入MD文档图片#一步一步搭建Svn服务之windows_java_23

4.2、创建1个用户组

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_24

#导入MD文档图片#一步一步搭建Svn服务之windows_java_25

#导入MD文档图片#一步一步搭建Svn服务之windows_git_26

#导入MD文档图片#一步一步搭建Svn服务之windows_git_27

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_28

输入上面的信息,点击OK,我们就创建一个用户组了。如果有多个项目,按照上面的过程,创建多个用户组,分别添加用户到指定用户组就可以了。

4.3、给代码库增加权限

#导入MD文档图片#一步一步搭建Svn服务之windows_java_29

修改这个项目,默认所有人是不能访问的

#导入MD文档图片#一步一步搭建Svn服务之windows_java_30

指定lipengfei用户可以访问这个项目(可读可写)

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_31

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_32

#导入MD文档图片#一步一步搭建Svn服务之windows_java_33

此处只演示了,指定用户访问指定项目组。控制用户组的权限一样的,在此我就不赘述了。

4.4、通过浏览器访问代码库(SVN服务本机操作)

在安装SVN Server的本机,通过浏览器访问SVN

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_34

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_35

#导入MD文档图片#一步一步搭建Svn服务之windows_git_36

至此,可以通过lipengfei用户成功访问SVN的代码库,注意只能访问你有权限的代码库。

4.5、通过浏览器访问代码库(远程操作)

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_37

#导入MD文档图片#一步一步搭建Svn服务之windows_git_38

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_39

远程通过网络访问SVN Server,操作报错。

4.6、访问协议https改成http

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_40

#导入MD文档图片#一步一步搭建Svn服务之windows_apache_41

#导入MD文档图片#一步一步搭建Svn服务之windows_java_42

#导入MD文档图片#一步一步搭建Svn服务之windows_java_43

4.7、再次通过浏览器访问代码库(远程操作)

#导入MD文档图片#一步一步搭建Svn服务之windows_svn_37

#导入MD文档图片#一步一步搭建Svn服务之windows_git_45

#导入MD文档图片#一步一步搭建Svn服务之windows_版本管理_46

至此,恭喜你兄弟,已经成功的在windows环境下,成功的安装了属于你的SVN服务平台。文章中演示的环境是windows server2019,其实windowsXP、windows7、windows10也都是可以的。 本套文章分3部分:后面我会再续写SVN的客户安装、SVN的日常操作,欢迎各位继续支持。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  DF5J4hb0hcmT   2023年12月12日   29   0   0 服务器git
  3I1N9ysrcSyk   2023年12月08日   31   0   0 javahapi数据交换
  DF5J4hb0hcmT   2023年12月07日   50   0   0 javaArthas
Lb78AVwchy8f