其他分享
首页 > 其他分享> > 关于SVN使用的笔记小节

关于SVN使用的笔记小节

作者:互联网

SVN简介

SVN 的全名称为Subversion。是一个开源的版本控制系统,用于多人开发同一个项目,共用一套资源。这个系统就是一个中央资源档案库(repository),类似于一个文件管理服务器,但是他可以记住这个档案库中每一次文件的变动。并且可以把存在其中的档案文件恢复到发生变动之前的旧版本。

主要功能简介:

1.实现虚拟的版本控制文件管理。能够按时间跟踪整个目录的变化情况。目录和文件都可以进行版本控制。

2.真实的版本历史:

只要对文件和目录做了改动,在系统中就会给我们新添加一个版本。

3.自动提交:

要么完全提交,要么完全不提交,例如改了10个文件,要不10个文件全都提交成功,要不10个文件全部提交不成功。没有中间值。

基本概念:

工作流程:

  首先写项目的时候我们要先确定一下,我们的本地有没有这个项目,如果没有则需要Checkout一下。把项目下载到本地。如果有这个项目,可能其他人提交过代码,则我们需要把项目update一下,先把别人提交的代码更新到本地。这是后我们就可以写代码了。这时候如果我们发现写的代码有问题,则我们使用Revert还原操作。如果代码没有问题,则我们将代码提交上去。

冲突问题:如果2个coder同时去修改同一个文件的同一行代码。就会发生冲突的情况。这时候提交,SVN 就会告知发生冲突,需要我们手动的去进行选择修改。

生命周期:

SVN的安装

下载地址:https://tortoisesvn.net/downloads.zh.html

SVN有一个服务端客户端(小乌龟),服务端是用来储存我们的仓库的。 客户端就是用来做更新,提交操作的。

服务器端(略)(一般来说一个团队装一个就可以了。主要看小乌龟)

安装步骤,直接下一步就可以。

在CustomSetup这一步,也就是安装路径选择的时候,command line client tools这个选项需要我们勾选,选择Entire feature will be installed on local hard drive,不然后续无法在idea中进行集成。

 

 

 后面,直接下一步,按提示就可以完成了。当点击完Finish之后,在空白处,右键,出现如下内容,则表示安装成功。

 

 

使用SVN客户端检出项目

首先,需要拉哪个项目就新建一个文件夹,比如我要拉一个CRM管理系统的项目,那我新建一个CRM管理系统文件夹,然后双击进入。在文件夹中,右键,选择SVNCheckout,得到如下界面。

注意:这里一定要新建一个文件夹,不然从远程仓库拉下来的代码是没有根目录的。直接就是代码。所以一定要新建对应项目的文件夹。

 

上述图片中远程仓库url:就是你项目在SVN版本库的地址是多少。后面的三个省略号也可以点开进入之后可以找到在远程仓库上的文件,然后进行选择。

检索出项目的存放位置:就是检索出来之后的文件放在哪里。

最后点击check out.则代码会被拉倒本地的刚刚新建的文件夹中。

使用SVN客户端提交项目

首先,我们在个人的工作副本(也就是拉下来代码的文件夹,此时文件夹的内容和版本库中的是一致的),新建一个文本内容 Hello.txt。此时个人工作副本中的内容已经和版本库中不相同了。

选中该文件,右键菜单——选择TortoiseSVN——选择Add.

然后,再选择该文件,右键菜单(这时出现了SVN Commit)——选择SVN Commit。出现如下图框。

 

 

 在Recentmessage中,写入注释,表示这次 变动的内容是什么样的。点击OK。

 

此时代码已经上传提交,At revision版本号变成了3。

使用SVN客户端拉(更新)项目

此时,我们模拟其他coder修改了Hello.txt文件,并提交了代码。现在版本库中该项目的版本号已经由3变成了4。

可是在我们自己的个人工作副本中,还是原先的3版本。所以此时我们需要从版本库中更新我们的项目。

此时我们在个人工作副本中,空白处,右键选择 SVN-update。然后更新项目。

 

此时,在版本库中的其他coder修改的Hello.txt的内容就被同步过来了。

版本冲突问题

首先,版本冲突的原因:

假设有A和B俩个用户,都在版本号为10的时候去修改了hello.txt这个文件。A在修改完成后,提交了代码到版本库中。这时候再版本库中,该文件的版本号已经变成了11。于此同时,B用户在自己的个人工作副本中修改版本号为10的文件,修改完成后提交到版本库中,由于版本库中的hello.txt的代码现在是11版本。所以B肯定会提交失败。此时,B要先去更新hello.txt文件,如果此时B和A修改的是同一个文件的同一行代码。则必然会发生冲突的现象。

版本冲突的现象。

在发生版本冲突的时候,SVN会在当前的工作目录中保存所有的目标文件的版本。例如,上次更新的版本,自己更新的版本,别人更新的版本。

如何解决版本冲突的问题?

首选,我们需要模拟一个冲突发生的情况。

假设有A和B俩个用户,目前他们的代码都是从版本库总更新下来的最新版本V4.

 

此时A修改了该项目中Hello.txt的文件内容

修改了文件第三行。

 

此时B也修改了项目中Hello.txt的文件内容

修改了文件第三行。

 

此时,A用户提交了自己的代码到版本库中。

 

 提交后,我们发现,版本库中的文件版本变成了V5。

此时,B也开始提交Hello.txt到版本库中。

 

 

此时提交,我们会发现,显示提交失败。Hello.txt is out of date。B的版本是V4。而此时版本库中的版本因为A的提交已经变成了V5。此时会自动弹出窗口询问是否需要更新,我们选择更新就可以。

 

点击update后,会提示你,发生了冲突。

 

这时,B再看自己的个人工作副本中。会发现出现了很多不同版本的Hello.txt,有上个版本的V4的,目前版本库的版本V5,自己版本的mine.等等。

 

 看上述图片的左侧,会有红色的提示信息,告诉你Hello.txt这个文件发生了冲突。这是可以直接选择红色的冲突文件双击打开,也可以选择 Cancel,取消,然后在右键点击Hello.txt文件,选择TortoiseSVN——Edit conficts。

 

进来之后,可以发现我们发生冲突的文件。左边是版本库的版本,右边是自己的版本。最下面是融合协商之后修改的版本。

如果我们选择使用别人的版本,也就是目前版本库中的版本,则选择左侧,右键,Use this text block。右边同理。

 

 注意:这里,尽量不要用自己的去覆盖别人的东西。

也可以双方进行协商之后,作出修改,如下所示。,然后Mark as resolved标记为解决。然后点击左上方的保存Save。

 

此时,我们再看B的个人工作副本。会发现,之前的冲突文件都没有了,只剩下了Hello.txt。打开该文件发现。里面的内容已经变成了上面修改的内容。

 

 

 

 这时候我们再次选择进行commit提交,就可以解决冲突的问题了。(右键,选择 commit)

 

 

如何降低冲突的发生?

1.当代码编辑完成后,尽快提交,多次提交更新,可以降低冲突发生的概率。也会降低冲突发生的复杂度。

2.在提交的时候,要做好注释,方便后期查找更新的原因。

3.每次都先提交,然后更新,每天早上打开都先从版本库获取最新版本,每天下班都必须将已经编辑过的文档都提交到版本库中。

 

标签:SVN,文件,副本,提交,代码,小节,笔记,库中,版本
来源: https://www.cnblogs.com/wepter/p/15408006.html