SVN学习日记

 

1.SVN介绍

1.1 项目管理中的版本控制问题

  • 解决代码冲突困难(不同的版本可能存在兼容性的问题)
  • 容易引发bug
  • 难于恢复到以前的版本(版本更新之后很难恢复,比如发现更新之后错误百出,还换不回去)
  • 无法进行权限控制(?)
  • 项目版本发布困难

1.2 什么是版本控制

版本控制是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一致到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

也可以理解为是一种思想,因为每一个问题不可能在一次解决中找到完美的答案,即写项目的时候不可能做到一次性把代码写的不需要后期修改那样子优雅和完善,所以就需要对每一次自己思路和代码进行保留(而每一次提交或修改都看作是一个版本,所以称之为版本控制)。

在团队开发的场景中,和个人开发的场景大同小异,都是为了记录下每次提交的内容和人员等信息。

例子:对于一个文档在团队内做出的修改之后,其记录形式就如下图(这样子也可以避免在实际开发过程中因为很多人同时修改一个文档而造成的,因多人修改而造成的数据或者其他等等问题):

1.3 版本控制工具

用于实现版本控制这一思想的工具;这种控制工具大致分为集中式版本控制工具(CVS ;SVN ;VSS)和分布式版本控制工具(Git and so on)。

1.4 SVN是什么?

SVN是版本管理工具,在当前的开源项目里,几乎都会使用SVN。Subversion项目的初衷是为了替换当年开源社区最为流行的版本控制软件cvs,在cvs的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。

1.5 SVN两种模式

svn是基于客户/服务器模式:

SVN的两种模式:

(1)复制,修改,合并(SVN的默认模式)

在这种模型里,每个客户读取项目配置库建立一个私有工作副本--版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误.

我的理解:

每一个客户都会在客户端建立一个副本,以及一个映射,在用户工作时候,修改自己的副本,最终通过人工方式整合检查正误,进行合并,优点在于支持并发。

(2)锁定-修改-解锁

在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。此模式不适合软件开发这种工作。

1.6 SVN工作方式

 

tom和jerry都从服务端检出版本1,各自修改之后,变为版本2,进行提交,但是由于提交时,提交的版本号必须比服务器服务端的版本号高1,一方提交版本2之后,另一方就不能提交了,所以jerry更新了版本3,之后进行提交,提交成功!

问:假如说,两个人同时提交版本2,系统会如何选择???

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

1.7 SVN的一些概念

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

日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。

1.8 SVN服务端和客户端windows安装教程

https://jingyan.baidu.com/article/870c6fc36a31d0b03fe4be3f.html

 

1.9 服务端使用

(1)服务器创建用户

(2)服务器创建资源库,可以创建一个空的资源库,默认给所有用户分配权限。

默认选择常见的FSFS类型即可(FSFS:一种不需要数据库的存储系统),VDFS是基于FSFS的一种分布式的存储类型。

(3)保存好URL,方便客户端进行连接。

 

1.10 客户端使用

(1)客户端新建一个文件夹,选择SYN检出,检出时候输入URL,之后用户密码认证

(2)回到服务器中,可以查看到文件夹已经上传成功了(comment提交,update下载,尴尬纠结半天)。

 

2.eclipse使用SYN

2.1 eclipse下载SYN

---------------------

作者:文斯莫克香吉士

来源:CSDN

原文:https://blog.csdn.net/v123411739/article/details/22512133

版权声明:本文为博主原创文章,转载请附上博文链接!

有三种方法,我选择从eclipse帮助中直接查找下载。

2.2 上传project到SVN服务器

(1)在Eclipse中,从Show View中调出SYN资源库视图

(2)在空白位置邮件选择新建资源库的位置

(3)填好服务器的地址(我选择的是我下载的SYN资源库的URL)

(4)新建一个工程,写好project的初始版本

(5)右键Project->Team->ShareProject

(6)选择Repository类型为SYN->点击next

(7)使用已有资源库位置,或者创建新的资源库位置(就是你刚才创建的那个)

(8)使用项目名称作为文件夹名->点击Finish->输入用户名和密码(这个我测试时候没有输入)

(9)自由选择是否打开Synchronize视图,建议打开

(10)右键project->Team->提交

(11)自由选择是否填写日志(瞎写了点,最好写上点啥)

(12)点击OK->上传成功

2.3 从服务器下载project到本地

(1)在资源库视图点击资源库左边的小三角形后出现该资源库下的所有Project

(2)选择要下载的project右键 --> 检出为

(3)自由选择是否更改属性 --> Finish --> 下载成功

2.4 从服务器更新代码

(1)右键项目Project --> team->与资源库同步

(2)之后,选择打开Synchroniz视图(点击与资源库同步之后,他会弹出来一个框框,说你这个项目“has been modified.Save change"说你这个项目被改变了,保不保存那,你只能点保存,不点保存的话,窗口就关闭了。。。。无奈)

(3)与本地代码有不同的服务器代码将显示在Synchronize视图下,双击某个代码文件可以查看本地代码和服务器代码的对比,加号的为新增的文件。(这个可能是我测试代码代码量少,没看出来这个,但是看到的是不一样的代码会被加粗)

(4)将模式切换到Incoming Mode,这个模式下的代码都是服务器更新的代码,需要下载到本地的,右键要更新的文件 --> Team --> 更新(我点的都是 覆盖/更新 更新键是白色不可以点击的)

(没有错,就是那个被点了一下的那个)

3.冲突情况的解决办法

(1)如果不出问题的话,你就更新成功了,

如果出现这个图标,则代表本地代码和服务器代码有冲突(即:本地代码在未更新到最新版本的情况下,对代码进行了更改;或者在你对a.java写代码的期间,有人往服务器上传了新的a.java代码,使得代码间出现了冲突),有冲突时需要先解决冲突再合并代码。

 

(2)冲突情况的解决办法:

冲突情况1:服务器代码和自己代码改动的地方相同

这种情况比较复杂,一般只能将自己的代码保存一份到本地,然后直接将服务器代码更新下来,然后在新的代码上修改自己的逻辑。

 

冲突情况2:服务器代码和自己代码改动的地方不同

这种情况比较常见,就是你跟别的开发者都在更改同一个文件,但是由于开发任务是分开的,所以更改的地方是不同的,解决办法如下。

1、双击冲突文件进入比较视图

2、找到服务器上新增的但本地没有的代码块,选中此代码块,点击右上角的按钮,将服务器代码复制到本地(其他地方也同此操作),如果点击按钮没用,则关闭比较视图重新打开

3.将所有服务器上新增的代码复制到本地文件后,右键冲突文件选择标记为合并即可,此时该文件就会消失在Synchronize视图下,并且该文件的代码已经成功将本地代码和远程代码合并到一起

 

4. SVN软件使用时一些配置(超链接。。。)

https://www.visualsvn.com/server/getting-started/#Network-Settings

 

5. SVN菜鸟学习

http://www.runoob.com/svn/svn-life-cycle.html

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值