SVN入门第二讲——SVN的简单使用

SVN的基本使用原理

SVN是基于客户端/服务器这种模式的,其基本使用原理如下图所示。
SVN入门第二讲——SVN的简单使用_第1张图片

SVN的使用模式

SVN的使用模式共有两种,它们分别是:

  • 复制-修改-合并方案,也即Subversion默认的模式:在这种模式里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误;
  • 锁定-修改-解锁方案:在这样的模式里,在一个时间段里配置库的一个文件只允许被一个人修改。此模式不适合软件开发这种工作。

SVN的工作方式

SVN的工作方式可参照下图来理解。
SVN入门第二讲——SVN的简单使用_第2张图片
SVN的工作方式用一句话来说就是,我们可以使用图形化界面的客户端软件来连接到SVN服务器,然后你爱干嘛干嘛,反正代码最终是要存储到服务器上的硬盘的本地文件里面的。

安装SVN服务器

了解完上述知识点之后,咱就来安装SVN服务器。这里,你可以去官方网站下载官方提供的服务端安装包,下载地址是http://subversion.apache.org/download.cgi。进入到下载页面后,你就能找到下载的位置。
SVN入门第二讲——SVN的简单使用_第3张图片
温馨提示:官方提供的服务端安装包,安装后需要通过命令行操作,适用于专业配置管理员使用。咱就甭操这份闲心了,直接安装志愿者开发的图形化操作界面的SVN服务端,因为它适用于普通软件开发人员使用。
这里,我将使用图形化用户界面工具——VisualSVN来安装SVN服务器。首先,咱要从网上下载VisualSVN,下载地址是https://www.visualsvn.com/server/download/,进入到下载页面后,找到下载的位置进行下载,笔者下载的是VisualSVN-Server-4.0.4-x64.msi。
SVN入门第二讲——SVN的简单使用_第4张图片
温馨提示:64位的VisualSVN安装程序必须安装在64位的Windows操作系统上,同理,32位的VisualSVN安装程序必须安装在32位的Windows操作系统上。由于本人计算机是Win10 64位的操作系统,所以安装以上程序正好。
然后,我就来按照如下步骤讲解SVN服务器的安装,大家可要睁大眼睛仔细看哟!

  • 第一步,双击VisualSVN-Server-4.0.4-x64.msi,弹出如下窗口。
    SVN入门第二讲——SVN的简单使用_第5张图片
  • 第二步,点击Next按钮,在弹出的窗口中选择我接受。
    SVN入门第二讲——SVN的简单使用_第6张图片
  • 第三步,点击Next按钮,出现如下窗口,就使用默认配置,什么都不需要修改。
    SVN入门第二讲——SVN的简单使用_第7张图片
  • 第四步,在弹出的窗口中,指定VisualSVN Server的安装目录和SVN仓库目录,最需要注意的是咱要指定一个端口,默认是443,如果安装过程中提示有冲突,再选择其他端口,比如8443。
    SVN入门第二讲——SVN的简单使用_第8张图片
    此时,当我点击Next按钮时,出现如下了窗口,提示443端口被另一个程序占用了,安装有了冲突。
    SVN入门第二讲——SVN的简单使用_第9张图片
    所以,这时咱也只能换个端口号了,比如选择8443这个端口号。
    SVN入门第二讲——SVN的简单使用_第10张图片
  • 第五步,点击Next按钮,出现如下窗口,就使用默认配置,什么都不需要修改。
    SVN入门第二讲——SVN的简单使用_第11张图片
  • 第六步,点击Next按钮,出现如下窗口。
    SVN入门第二讲——SVN的简单使用_第12张图片
  • 第七步,点击Install按钮,即可进行SVN服务器的安装。
    SVN入门第二讲——SVN的简单使用_第13张图片
    安装过程很快,接着,就会出现如下窗口。
    SVN入门第二讲——SVN的简单使用_第14张图片
  • 第八步,点击Finish按钮,完成安装。

那怎样查看是否安装成功呢?可以点击开始菜单,如果看到如下效果,那么就代表SVN服务器安装成功了!!!
SVN入门第二讲——SVN的简单使用_第15张图片

安装SVN客户端

SVN客户端类型

SVN客户端需要通过网络访问SVN服务端提交文件、查询文件等,我们可以通过以下客户端类型访问SVN服务端。
SVN入门第二讲——SVN的简单使用_第16张图片

下载与安装TortoiseSVN客户端

下载TortoiseSVN客户端

TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费。TortoiseSVN是Subversion的Windows扩展,它使你避免接触Subversion枯燥而且不方便的Command Line,它完全嵌入Windows Explorer,使用时只须在正常的窗口里右键操作就可以了。
那么,如何下载它呢?这里我直接给出下载地址:https://tortoisesvn.net/downloads.html,进入到下载页面后,找到下载的位置进行下载,笔者下载的是TortoiseSVN-1.12.2.28653-x64-svn-1.12.2.msi。
SVN入门第二讲——SVN的简单使用_第17张图片

安装TortoiseSVN客户端

下面,我会按照如下步骤来安装TortoiseSVN客户端,大家可要睁大眼睛仔细看哟!

  • 第一步,双击TortoiseSVN-1.12.2.28653-x64-svn-1.12.2.msi,弹出如下窗口。
    SVN入门第二讲——SVN的简单使用_第18张图片
  • 第二步,点击Next按钮,弹出如下窗口。
    SVN入门第二讲——SVN的简单使用_第19张图片
  • 第三步,点击Next按钮,在弹出的如下窗口中根据需要选择TortoiseSVN客户端的安装目录,当然了,你使用默认安装目录也可以。
    SVN入门第二讲——SVN的简单使用_第20张图片
  • 第四步,点击Next按钮,弹出如下窗口。
    SVN入门第二讲——SVN的简单使用_第21张图片
  • 第五步,点击Install按钮,即可进行TortoiseSVN客户端的安装。
    SVN入门第二讲——SVN的简单使用_第22张图片
    安装过程很快,接着,就会出现如下窗口。
    SVN入门第二讲——SVN的简单使用_第23张图片
  • 第六步,点击Finish按钮,完成安装。

安装TortoiseSVN客户端以后,会修改客户端电脑右键菜单,如下图所示。
SVN入门第二讲——SVN的简单使用_第24张图片

SVN的简单使用

如果你想要使用SVN服务器,必须要让SVN的服务处于一个启动状态。我相信大家应该都知道如何查看SVN的服务是否处于启动状态。如果你还不知道,也不用着急,可右键【此电脑】,然后在弹出的菜单栏中点击【管理】,可看到如下窗口:
SVN入门第二讲——SVN的简单使用_第25张图片
从上图中你可以清楚地看到SVN的服务是否正处于启动状态中了。

创建SVN的仓库

我们应该首先在SVN服务器里面创建一个仓库,仓库中存放要版本控制的文件。这其实有点类似于在MySQL里面创建一个数据库。以下是创建仓库的详细步骤:

  • 第一步,进入到VisualSVN Server的安装目录下,然后再进入到bin目录中,双击VisualSVN Server.msc即可打开SVN服务器的图形化开发工具。
    SVN入门第二讲——SVN的简单使用_第26张图片
  • 第二步,右键单击Repositories,创建一个新的仓库。
    SVN入门第二讲——SVN的简单使用_第27张图片
  • 第三步,点击Create New Repository,然后弹出如下窗口,选择文件存储方式就好,什么都不用修改,直接点击下一步。
    SVN入门第二讲——SVN的简单使用_第28张图片
  • 第四步,在弹出的窗口中输入仓库的名称,例如test,然后点击下一步。
    SVN入门第二讲——SVN的简单使用_第29张图片
  • 第五步,接着就会弹出如下窗口,依然使用默认配置(即创建一个空的仓库),直接点击下一步。
    SVN入门第二讲——SVN的简单使用_第30张图片
  • 第六步,弹出如下窗口,告诉我们要设置用户访问仓库的权限,使用默认配置即可(即所有用户都有读和写的权限),直接点击Create。
    SVN入门第二讲——SVN的简单使用_第31张图片
  • 第七步,最后在弹出的窗口中点击Finish,名称为test的仓库就创建好了。
    SVN入门第二讲——SVN的简单使用_第32张图片
    创建好的仓库如下图所示:
    SVN入门第二讲——SVN的简单使用_第33张图片

创建一个项目

仓库创建好之后,就需要在仓库中创建一个工程目录了,它专门用于存放开发项目代码、文档等。创建一个项目的详细步骤:

  • 第一步,右键点击所选择的仓库,然后在弹出的下拉框中选择新建项,接着选择Project Structure…
    SVN入门第二讲——SVN的简单使用_第34张图片
  • 第二步,在弹出的窗口中输入项目的名称。
    SVN入门第二讲——SVN的简单使用_第35张图片
  • 第三步,此时,项目就创建好了,如下图所示。
    SVN入门第二讲——SVN的简单使用_第36张图片

创建两个测试用户

通常软件开发是由多人协作开发的,所以为了模拟这种情况,我就在这儿创建两个测试用户。以下是创建用户的详细步骤:

  • 第一步,右键单击Users,创建一个新的用户。
    SVN入门第二讲——SVN的简单使用_第37张图片
  • 第二步,点击Create User,然后弹出如下窗口,输入用户名(例如aa)和密码(例如11),点击OK按钮就好。
    SVN入门第二讲——SVN的简单使用_第38张图片
    这样,即可创建一个用户,如下图所示:
    SVN入门第二讲——SVN的简单使用_第39张图片
    当然,我们也可创建多个用户,在上图中我就以同样的方式又创建一个用户名为bb和密码为11的用户。

测试SVN

我们知道通常软件开发是由多人协作开发的,所以为了模拟这种情况,我就使用上面创建好的两个测试用户来演示SVN的日常使用。
首先,我需要说明一点的是,你一进公司,公司就会为你分配一个账户,然后你的老大会给你仓库中项目的主干路径,这个路径是从哪儿来的呢?右键项目下的trunk目录,在弹出的下拉框中选中Copy URL to Clipboard就能复制这个路径。
SVN入门第二讲——SVN的简单使用_第40张图片
接着,我还需要说明的一点是,在实际开发中,每一个开发人员都会在自己的计算机上新建一个文件夹,它专门用于存放开发项目代码、文档等。例如,aa用户有可能会在自己的电脑桌面上新建一个aa文件夹,bb用户也有可能会在自己的电脑桌面上新建一个bb文件夹。但我在这儿为了演示真正意义上的团队开发,就在本人的电脑桌面上分别新建了一个aa文件夹(aa用户专用)和一个bb文件夹(bb用户专用)。做完这些准备工作,下面我就来详细地介绍SVN的日常使用。

  1. aa和bb这两个用户做的第一讲事情就是首先要与服务器进行同步,同步的意思其实就是检出项目,复制项目的副本到本地。咱可一定要注意:检出只做一次,后续都是更新。那aa用户如何检出项目呢?他需要在要检出的目录中(也即aa目录)右键,选中SVN Checkout。
    SVN入门第二讲——SVN的简单使用_第41张图片
    然后,就会弹出如下窗口,咱主要设置仓库中项目的具体目录地址即可。
    SVN入门第二讲——SVN的简单使用_第42张图片
    接着,点击OK按钮,就会弹出如下窗口,让咱输入用户名和密码。记住先不要勾选Save authentication,如果这台电脑就你自己一个人用,那么你直接把Save authentication这儿勾了就行了,它会把你的用户名和密码记住,因为我现在要用两个用户来演示,一旦勾选了,那么第二个人检出项目的时候也会使用这个用户名和密码,这样就达不到我需要演示的效果了。
    SVN入门第二讲——SVN的简单使用_第43张图片
    紧接着,点击OK按钮,可以看到弹出了如下窗口。
    SVN入门第二讲——SVN的简单使用_第44张图片
    最后,点击OK按钮,这时,咱就可以看到一个叫.svn的隐藏目录。注意,我们不能把这个目录给删了,因为这个目录里面记录了我们SVN的一些版本信息。
    SVN入门第二讲——SVN的简单使用_第45张图片
    至此,aa用户就与服务器同步了。同理,bb用户也需要与服务器进行同步。

  2. 我们知道通常软件开发是由多人协作开发的,所以aa用户有可能在他这一端创建一个Java类,例如User.java。

    public class User {
    	private Long id;
    }
    

    然后,aa用户需要将这个Java类添加到SVN的管理中(只有第一次操作的时候才需要添加,谁写的这个类,谁就需要添加),那么怎样才能将这个Java类上传到服务器中呢?他需要右键User.java这个文件,在弹出的下拉框中选中TortoiseSVN,再在下拉框中选中Add。
    SVN入门第二讲——SVN的简单使用_第46张图片
    此时,aa用户应该能够看到User.java这个文件上有了一个+号的小图标,它代表的是文件现在已经添加到SVN的管理中了,但是还没有上传到服务器中去。
    在这里插入图片描述
    接着,aa用户需要将User.java这个文件上传到服务器中去,也即提交。如何进行提交呢?他需要右键User.java这个文件,在弹出的下拉框中选中SVN Commit。
    SVN入门第二讲——SVN的简单使用_第47张图片
    紧接着,在弹出的如下窗口中填写提交日志,建议一定填写方便日后查询历史操作日志。
    SVN入门第二讲——SVN的简单使用_第48张图片
    再接着,点击OK按钮,在弹出的窗口中输入用户名和密码。
    SVN入门第二讲——SVN的简单使用_第49张图片
    继续点击OK按钮,此时,会弹出如下窗口,我们从中可以看到当前提交后的最新版本。
    SVN入门第二讲——SVN的简单使用_第50张图片
    最后,点击OK按钮,aa用户应该能够看到User.java这个文件上有了一个✔号的小图标,这个✔小图标说明文件已经提交到服务器上去了,而且跟服务器上的代码是同步的。
    在这里插入图片描述

  3. aa用户提交代码以后,bb用户有可能在他这一端从服务器上去更新代码,他需要在要检出的目录中(也即bb目录)右键,选中SVN Update。
    SVN入门第二讲——SVN的简单使用_第51张图片
    然后,在弹出的窗口中输入用户名和密码。
    SVN入门第二讲——SVN的简单使用_第52张图片
    接着,点击OK按钮,此时,会弹出如下窗口,我们从中可以看到更新到的最新版本以及更新的新文件或修改的文件。
    SVN入门第二讲——SVN的简单使用_第53张图片
    最后,点击OK按钮,bb用户应该能够看到User.java这个文件上有了一个✔号的小图标,这说明与服务器上的代码是同步的,也就是说bb用户的代码是最新的。
    在这里插入图片描述
    bb用户更新仓库的文件到本地之后,有可能会修改User类的代码,假设他在该类中添加了一个private String username属性。

    public class User {
    	private Long id;
    	private String username;
    }
    

    当他一改完User类的代码以后,就会看到User.java这个文件上有了一个感叹号的小图标,它说明了bb用户现在已经对代码进行了修改,与服务器已经不一致了。
    在这里插入图片描述
    现在bb用户需要把自己修改后的代码提交到服务器上去。如何进行提交,上面我已经讲过了,这里我再讲一遍。首先,右键User.java这个文件,在弹出的下拉框中选中SVN Commit。
    SVN入门第二讲——SVN的简单使用_第54张图片
    然后,在弹出的如下窗口中填写提交日志,建议一定填写方便日后查询历史操作日志。
    SVN入门第二讲——SVN的简单使用_第55张图片
    接着,点击OK按钮,在弹出的窗口中输入用户名和密码。
    SVN入门第二讲——SVN的简单使用_第56张图片
    紧接着,点击OK按钮,此时,会弹出如下窗口,我们从中可以看到当前提交后的最新版本。
    SVN入门第二讲——SVN的简单使用_第57张图片
    最后,点击OK按钮,bb用户应该能够看到User.java这个文件上有了一个✔号的小图标,这个✔小图标说明文件已经提交到服务器上去了,而且跟服务器上的代码是同步的。
    在这里插入图片描述

  4. bb用户修改完代码并且提交之后,aa用户也有可能在他这一端从服务器上去更新代码。温馨提示:写代码之前,要养成一个好习惯,那就是先更新,再写代码,因为你不能保证你现在的代码是不是最新的,所以说你做的第一件事就是更新,否则的话,极有可能出现代码冲突的问题。 如何从服务器上去更新代码,上面我已经讲过了,这里我再讲一遍。首先,在要检出的目录中(也即aa目录)或者文件上右键,选中SVN Update。
    SVN入门第二讲——SVN的简单使用_第58张图片
    然后,在弹出的窗口中输入用户名和密码。
    SVN入门第二讲——SVN的简单使用_第59张图片
    接着,点击OK按钮,此时,会弹出如下窗口,我们从中可以看到更新到的最新版本以及更新的新文件或修改的文件。
    SVN入门第二讲——SVN的简单使用_第60张图片
    最后,点击OK按钮,aa用户就会更新仓库的文件到本地中,如果他打开User.java这个文件,他就会发现他的代码是最新的。
    在这里插入图片描述

  5. aa用户更新仓库的文件到本地之后,也有可能会修改User类的代码,假设他在该类中添加了一个private String passwrod属性,他不小心将单词password写成了passwrod。

    public class User {
    	private Long id;
    	private String username;
    	private String passwrod;
    }
    

    当他一改完User类的代码以后,就会看到User.java这个文件上有了一个感叹号的小图标,它说明了aa用户现在已经对代码进行了修改,与服务器已经不一致了。
    在这里插入图片描述
    现在aa用户需要把自己修改后的代码(他不知道自己写的代码有没有错误)提交到服务器上去。如何进行提交,上面我已经讲过两遍了,这里我再讲一遍。首先,右键User.java这个文件,在弹出的下拉框中选中SVN Commit。
    SVN入门第二讲——SVN的简单使用_第61张图片
    然后,在弹出的如下窗口中填写提交日志,建议一定填写方便日后查询历史操作日志。
    SVN入门第二讲——SVN的简单使用_第62张图片
    接着,点击OK按钮,在弹出的窗口中输入用户名和密码。
    SVN入门第二讲——SVN的简单使用_第63张图片
    紧接着,点击OK按钮,此时,会弹出如下窗口,我们从中可以看到当前提交后的最新版本。
    SVN入门第二讲——SVN的简单使用_第64张图片
    最后,点击OK按钮,aa用户应该能够看到User.java这个文件上有了一个✔号的小图标,这个✔小图标说明文件已经提交到服务器上去了,而且跟服务器上的代码是同步的。
    在这里插入图片描述

  6. aa用户修改完代码并且提交之后,这个时候,bb用户也有可能在他这一端从服务器上去更新代码,然后去使用aa用户已提交过的代码。那么如何从服务器上去更新代码呢?上面我已经讲过两遍了,这里我再讲一遍。首先,在要检出的目录中(也即bb目录)或者文件上右键,选中SVN Update。
    SVN入门第二讲——SVN的简单使用_第65张图片
    然后,在弹出的窗口中输入用户名和密码。
    SVN入门第二讲——SVN的简单使用_第66张图片
    接着,点击OK按钮,此时,会弹出如下窗口,我们从中可以看到更新到的最新版本以及更新的新文件或修改的文件。
    SVN入门第二讲——SVN的简单使用_第67张图片
    最后,点击OK按钮,bb用户就会更新仓库的文件到本地中,如果他打开User.java这个文件,他就会发现他的代码是最新的。
    SVN入门第二讲——SVN的简单使用_第68张图片
    此时,发现服务器上的代码已经被改的稀烂了,所以我们就会想它能不能恢复到历史版本呢?答案是可以的,如果真想恢复到历史版本,那么该怎么办呢?欲知后事如何,请听下讲分解!

你可能感兴趣的:(SVN版本控制系统之入门)