SVN使用简程——eclipsec插件集成

1、什么是SVN?

SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。
作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。
这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。
Git – 版本控制系统。
SVN是集中式,Git是分布式。

1.1. SVN工作原理

image_1bg0suadlcrv1re31k3115s41cjq9.png-47.7kB
多个客服端共同使用一个服务器端,实现代码统一管理的功能。多个客户端以服务器的主仓库中的代码为基准,执行提交更新操作。

1.2. 我们使用SVN能做什么?

1、 多人共享同一的资源,并且可以对资源实现修改和更新;
2、 记录资源的每一次变更,以及记录更改该资源的人,并且可以恢复到之前的任何一个修改点;

2、安装SVN(Eclipse插件)

2.1. 安装流程

(1)、找到Eclipse的安装目录,找到dropins目录
Eclipse——SVN插件地址点我下载
image_1bg0te40eim41obpknt55u1t3om.png-36.4kB

(2)、将压缩包直接解压到该目录,结果如下图:
image_1bg0thisc16mn10jk1s3gmjg15k13.png-8.4kB

(3)、重启Eclipse,先点击图中右上角的按钮找到如下SVN视图界面,如果没有列表中没有SVN资源库研究,请再查看自己上几步是否出错,这个插件在eclipse-Luna,MyEclipseForSpring2014亲测好使,如果以上步骤均没出错,请自行百度。当然如果你能将你的的解决方案在评论区留言也是极好的~
image_1bg0tus0l1l97147vghlnoovk71g.png-51.2kB

(4)、SVN服务器仓库页面,插件安装成功,打开SVN窗口如下
image_1bg0vpd4t1vlhm0v17b349ml4034.png-10.3kB
点击第三歩中找到的视图,即出现第四步中的窗口,一开始没有连接,在接下来的步骤中会讲解如何使用eclipse的SVN插件进行项目的管理。

3、SVN协议

访问SVN资源库的协议通常有三种:

  1. http 客户端和浏览器都可以访问。
  2. https 客户端和浏览器都可以访问,同时比http更安全。
  3. svn 只能通过客户端访问,这里浏览器不识别该协议,需注意

4、资源仓库

4.1. SVN资源仓库中目录结构

SVN资源仓库中有三个非常重要的目录,trunk(主干)、branches(分支)、tags(标签),其作用是:
这三个目录,都是可以存放文件的,只是在功能方面有一些区别(只是约定):

  • trunk:一般的项目都是基于主干开发的。
  • branches:分支,一般用于有某些开发功能时,需要基于主干开分支,开发完成后要合并到主干。
  • tags:标签,项目开发完成后,发布上线时,需要将主干的代码打标签到tags中,一般情况下,tags的内容是只读的。

4.2. 三个目录的应用

这三个目录在实际项目开发过程中的应用:
image_1bg0v59b3199nn73a7uali3u32a.png-66.2kB

5、SVN项目实战

在企业开发过程中,更为常用的是通过Eclipse的插件来管理文件版本。

5.1. 在Eclipse中创建SVN连接

image_1bg103qcj19rj1nsd1il61uq1egs3h.png-44.9kB
连接成功后会见到下图:

image_1bg10be1m1dboaj019pdbnu1kp13u.png-14.6kB

5.2. 将项目发布到SVN的trunk

选择项目点击右键,选中Team项,点击Share Project
image_1bg10i1al1er61do5v111l7l1pup4b.png-73.6kB

选择SVN
image_1bg10l99f19v314lmgmhiko1tgv4o.png-36.2kB

这里选择已有的资源库位置(因为之前我们已经创建好了,一般仓库名与项目名一致)
image_1bg10nh3t11i012bb1eam14pf14cs55.png-62.4kB

浏览你创建的trunk目录
image_1bg115f1smoq1alfii18qhpps9.png-49.2kB

这里不保留项目名,然后点击finish
image_1bg119ptc1p8vu8c12hg1q2q1notm.png-40.3kB

点击yes
image_1bg11bb1k1rl41hfrevfk9ar4913.png-26.2kB
之后会开始同步资源库信息,询问是否打开资源窗口,点击yes即可。

image_1bg11r5gqotf1hqm136e2qr1qem1g.png-98.9kB
这么多内容都是应该提交到SVN的吗?
不是的,对于Maven项目而言,只提交src下的文件和pom.xml即可。
普通的web项目只需要提交srcWebRoot下的文件(包含src和WebRoot目录)即可,这里不建议将lib(jar包)目录提交到代码仓库中,最好在开发前组内人员提前约定好实用哪些jar包。
image_1bg128pnjjar9ba96k1lb21j5a1t.png-51.6kB
提交成功后,剩余的文件
image_1bg12djdrttk1u4fjmdt76d422a.png-12kB
每次执行与资源库同步时都会有以上内容,会影响每次提交的选择,所以可以选择将这些目录文件忽略掉。

5.3. 忽略指定的资源

5.3.1 全局指定

例如全局忽略.project结尾的文件
image_1bg12m9ui18vp14si1i25mldure37.png-91.4kB
该中类型文件已被忽略
image_1bg12nq2d12gr1s99gganl51mog3k.png-6.7kB

5.3.2 单个指定

image_1bg12quksaap113513651hbvtq41.png-44.4kB

这里选择第一个可以忽略一个文件,选择第二个可以忽略这一类型的文件,但这个忽略这一类型只适用于该项目中
image_1bg12sluc13hqoob1vi8l4t13rb4e.png-32.5kB

5.3.3 删除指定

如果不小心指定错了文件,那怎么删除指定呢,请往下看
image_1bg131mh1jhb1fo918av11av1et44r.png-70kB

右键项目选中Team下的显示属性选项,在弹出的窗口中可以查看忽略的指定文件,在这里可以删除指定
image_1bg134p071ovk1uiaj7g1svr1kri5h.png-31.6kB

5.4. 提交代码

当我们在本地将代码修改后需要提交到SVN仓库,以便别人可以获取到最新的代码。
image_1bg13ceta1ffcslaetq19bn1uft5u.png-44.1kB

接下来演示提交代码
image_1bg13fp621ud3n0n84gtpl1h96b.png-87.1kB
注意:不建议直接提交,因为该文件可能会被其他人修改,从而造成冲突,推荐在提交(更新)之前先执行与资源库同步。
image_1bg13ibq716lfsjt1k5htvqqa36o.png-51.1kB

5.5. 更新代码

为了演示效果,在桌面将ajax项目检出(check out),并且修改其中的文件完成提交。
image_1bg13noac9es1t2kh7g10io96775.png-140.7kB
image_1bg13qilvvk16cg18r31dpn1s4k7i.png-87.6kB
image_1bg13u991812jgj3bfd9dao87v.png-63.7kB

可以双击文件查看差异:
image_1bg13vs20r3t1vjm1vnpcbdk7s8c.png-87.3kB

然后,在Eclipse中将项目与资源库同步:
image_1bg14ad58n4cf6kd4due01nnk8p.png-14.5kB
然后右击该文件更新即可,然后可以查看更新后的文件
image_1bg14eh9316fsi7l10d3mgs10ti96.png-27.9kB
image_1bg14fl3b1ond16m7aff1jtk1iaf9s.png-32.9kB

5.6.解决冲突 (难点亦是重点)

什么是冲突?
冲突就是在同一个版本基础之上,多个人对该文件修改了修改,其中一个人将文件提交到SVN,这时,该文件已经是新的版本,但是,其他人的本地还是旧的版本,
这时,其他人并不知道该文件已经有了新的版本,执行提交操作,这时就产生了冲突。
解决冲突的核心思想:为了避免冲突,要在最新的版本之上修改(也就是说修改之前先更新),再提交。
如果我更新了之后,在编写代码的同时别人将该文件再次更新(我不可能时时刻刻都查看更新),这时直接提交会造成冲突,正确的做法是:提交之前将该文件先执行与资源库同步操作,先将冲突解决掉再提交代码。
接下来就需要讨论下个话题了,如何解决冲突?
首先要先明确,解决冲突是不能通过工具自动完成的,必须人工完成,当然了,可以借助工具辅助完成。

下面,演示冲突的解决过程:

5.6.1.制造冲突

在Eclipse中将文件内容修改,用于模拟用户1修改文件:
image_1bg14qm6jdesst91tre1is2122ra9.png-64.1kB

然后,在桌面中的目录中修改该文件,用于模拟用户2修改文件:
image_1bg150fqg806sa21fpa1d21r1kam.png-87.3kB

这时,先将桌面中的文件提交:
image_1bg155lbn1bje6t71etu1rdc18frb3.png-90.3kB
image_1bg1563j0121d1thcembjr21u28bg.png-47.3kB
提交成功。

在Eclipse中将项目与资源库同步:
image_1bg159l361su13nua1j10jo1qkubt.png-21kB

5.6.2 解决冲突(重点内容来了)

1、双击打开该文件,查看冲突的内容
image_1bg1609etrsiabd1ec71sukdkgcn.png-127.4kB

2、将远程更新的内容写到本地
image_1bg1691at1n6bs2h19cb128e1pced4.png-89.6kB

3、将该文件标记为合并(注意,一定是已经处理完冲突了才能标记,要不然会将服务端的文件覆盖掉)
image_1bg16c1ou126da5mpumssl114mdh.png-43.7kB
4、现在,就可以大胆的提交了(乱码问题不是本次的研究重点,如有发生请自己解决一下)
image_1bg16ddjtokr8pd11jnmmf1gvfdu.png-14.8kB

6.7.冲突的另一种解决方案

有些时候可能会是这种情况:
服务端文件的内容被大量的修改,如果按照上面的方法一个个解决,非常的麻烦,这时你可以尝试以下的解决方案:
1. 备份本地的文件
2. 将该文件执行还原操作,并且再执行 更新
操作(也就说,放弃自己的修改,更新到最新的版本)
image_1bg16kkvr153r1l3ucbb1e3g1rdneb.png-80kB
3. 将备份文件中修改的内容,拷贝(不是全部啊,只是自己修改的部分内容)回该文件,再执行提交就OK了。
总结:这种解决方案的核心思想是;“放弃自己的修改,把本地文件更新到最新版本,在最新版本基础之上修改”,并且提交。

本文绝大部分参考了网上的内容,如有侵权,联系后必删。
>>“不将就·能创新·耐得住”——网络人

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值