SVN简介:
SVN是Subversion的简称,是一个开放源代码的版本控制系统,将工程代码集中在服务器上进行一个统一的集中式管理,从而能够方便地控制代码版本,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的,而且通过使用SVN开发人员之间能够很方便的更新、提交工程代码,并且如果工程的版本有冲突还会有提示等等。
集中式管理工作流程图:
cb9c829c880aaa709960c289ce9f2c87.png
SVN的安装步骤有三,一是服务器端的安装,二是客户端的安装,三是开发工具内嵌客户端的安装。
SVN服务器端的安装:
SVN的服务器端可以在Windows操作系统上安装也可以在Linux操作系统上安装,关于服务端的下载可以在官网或者在可信任的网站下载,在此仅示例Windows操作系统下的安装。
1.官网下载:
94542c692a6a2311dcc4980bb83d48d8.png
SVN官网下载地址:
https://www.visualsvn.com/server/download/
2. 安装下载好的服务端:
8d2adc105ad8ccf7972edc62744c7681.png
9cb7be1088b727bd686356c6d2ac4a34.png
2aaf7a900908a6a3ff32296e29b73dbb.png
a262b48d8f5b20cfdfc0968b8a0a69cd.png
96611a074a786e02e22508c16795d2aa.png
如果出现这个提示的话,是因为443端口被其他服务占用了,需要换一个端口:
90d9e26765242734ff375bf629103992.png
bc54f066d309a9e84c375263f87e2f13.png
7b0feaed948b5832a64eabbd356cdc97.png
3717c160bfbde208df9f073ea76e100b.png
eb608df38a4ff9d4957047b5cfd42acd.png
安装完成后,进行服务端的配置:
1.先添加有一个共享目录:
392fb0abe7d3fb667a17742c8c4a742d.png
30205142324ce36bd613a4ef77b7d6d2.png
8c5f490b8d736302e4b1ac49e265a005.png
2ea0fad0fa7d1c2310c0acaef16fc400.png
cca3a918c533371a7d240793c5e36ce5.png
08db2a987b6159f7ab0baeb359756049.png
2. 创建几个用户:
74146681b7fb869c282d6bb06994fe68.png
c30e5ca8e8e39b1bb217f91d15c6f553.png
3.创建一个组,可以把用户分配到这个组里
0c0102c86d44484bb5eb6e2e33a60344.png
4.把共享目录的组关联起来,分配操作权限
b5cb26bd43ccf5f436e014d4dd136e7b.png
f79b5804598a311563e19751a93c89ce.png
5.重新启动服务器
6835f49fc4c2d556f3857db6ffcc3fdf.png
现在服务端的相关设置和用户的创建、分配权限就完成了。
SVN客户端的下载安装:
SVN需要客户端才能将文件或项目工程上传到刚刚在服务器上配置的共享目录中,关于客户端的下载可以在官网或者在可信任的网站下载。
1.官网下载:
92df298c97d391c391a38d9111d18f7c.png
官网下载地址:
https://tortoisesvn.net/downloads.html
2.安装下载好的客户端:
6b75a170bf6c4733da7cf239f19d152d.png
c156e7583072411a63fe5fb13829ffc1.png
dbd4a15b505ea2f2da10f837c1ef45e4.png
d503277ad0e119bff1cce2bf851d986f.png
99ee7e90792c3d57878319faf5ceffcb.png
d3a1e7d5b0ac8bdfa5450e77d06cb34e.png
3.客户端上传文件到服务器的共享目录中:
安装完客户端后右键点击一个文件夹就能看到SVN Checkout和TortoiseSVN,SVN Checkout是用于将服务器上的文件夹下载 下来,点击TortoiseSVN里的Impor则可以将一个文件上传到服务器中:
b0dc706d1df1a082a66f25266f344013.png
右键:
8451235f25300a7cd1f0da3f9949ead0.png
546253483b7a60caa91204206b885075.png
6e1b1e40a8c79cb9a4b3db4dbe70229a.png
5a2fba065bb435a9469333925cfa3b34.png
4.点击SVN Checkout下载服务器共享目录下的文件夹,下载的文件夹中会带有.SVN名称的文件夹里面是一次些配置文件:
4531bb9a7de03835ccf913d8bd50df4b.png
c94da2d596a15cf35042bff4a4cf3ed6.png
57989bb8f6e37b3d31f7791c5c763fab.png
9d75d8b6279ddc3ad133f86411bbbe0d.png
bc4951712b582afc8ea24611a70e26ab.png
e2063ff8afeda8764cf81e174c74d777.png
5.不带有.SVN文件的下载:
1d513ab71d72b770ff4c44db85058118.png
1186194a4938b77c3d12e44c5cb6c9c9.png
03fc783cd925fed6d82aaa398a930421.png
498f58bc6a021fdf03e4a0e6ba08c1ab.png
6.修改好的文件需要提交上去(commit):
使用SVN Checkout方式下载的文件夹因为带有.SVN,所以如果对这个文件夹里的某个文件进行了修改的话,会发现修改后这个文件夹显示一个叹号,例如我修改一个文件:
763541edd9878ceee3f5a591d6927495.png
0c6c6f7f67a6610fb565b33133d741af.png
这是因为里面的文件内容发生了变动,导致与.SVN里的配置文件记录的不符了,如果确认要保留这个修改的话,这就需要右键点击这个文件夹,使用SVN Commit提交上服务器端即可:
4ce9f107deaace0fc1df48018fb950a5.png
bbcc48161207cd77731a1364fa25c8a7.png
现在将修改的文件提交到服务端后,那个文件就不会显示叹号了,所以修改好的文件都得提交才行:
dcb894dc8a264fc5f970964977934a78.png
e20d7221c95a09c7b1f2813afbf63b12.png
7.想要获得最新的文件,需要更新一下(update):
提交就相当于更新了文件夹的内容,工程的话相当于更新了版本,如果想获得某个文件夹或工程的最新版本的话,需要右键点击SVN update来从服务器端更新,例如我把文件都删掉,点击更新时会从服务器把完整文件更新下来:
17b62b41fec7aa019384f898baf19d1e.png
ecc95164c55dff8af55bf94bfdfd3cf4.png
f3b947395d52457fcdc55ccb14bf0bed.png
如果A开发人员对其中一个文件进行了修改,然后提交到了服务端,这时候B开发人员就可以点击更新来更新A修改后的文件:
787115f25e7ef68bbe817b36ddc9cf09.png
SVN开发工具内嵌客户端的安装:
上面我们使用的是SVN的客户端,在操作系统中进行的下载、更新、提交,但是上传和下载工程代码不是很方便,因为这些操作不能直接在开发工具进行,我们是用开发工具写代码的,所以需要在开发工具中安装一个内嵌的SVN客户端。
这个插件可以在Eclipse的官网中下载到,有三种方式,一种是下载压缩包然后解压到Eclipse的目录下,一种是复制下载链接然后到Eclipse里进行下载,一种是直接在Eclipse里进行搜索安装:
第一种安装方式,下载插件包解压后,把文件拖到Eclipse的安装目录,然后重启Eclipse:
Svn插件包下载地址:
http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
04a60283a54f615d49c6cc1859ebfbff.png
第二种安装方式,使用链接在Eclipse里的插件下载页面下载,使用这个方式最好挂个×××不然很有可能会因为下载不到一些文件而发生异常:
Eclipse链接地址:
https://projects.eclipse.org/projects/technology.subversive/downloads
abe5a2cdb3afb7118ad242542ba1322f.png
c1b6977481406763032f18061ede8f4e.png
f9ed1441da84f44facf1a15c2edcb6e5.png
链接:
http://download.eclipse.org/technology/subversive/2.0/update-site/
e800b467df19db781f59d1bf6a606db1.png
2056cd151c98def51cbee47a60cb2541.png
e91ea2257c60c8aba71ce270dace25f7.png
等待安装完成:
bef497bbd1b0322344dce608d000aa1c.png
安装完成,点击Restart Now重启Eclipse:
3c0df33d1a32584676a8b66f6befdea6.png
第三种方式是直接在Eclipse中的Eclipse Marketplace里搜索SVN,这是一个Eclipse 的插件市场可以直接从里面搜索需要的插件并下载,这种方式是最方便直接的,同样的最好挂个×××以免因为下载不到一些文件而发生异常导致安装失败:
262c65086d6426cdd1105d0941f447c1.png
dd11cd40a0b63c81c81ecd7e1d307dee.png
eaad20f7346b800403cee2f4bae0d92c.png
2aa249a4881a96c04bd248c1f91a578b.png
6e2f034b6d5d5fe35773740d9694da54.png
f5a65a0c08d62cf322c2aff20453437d.png
安装完成,点击Restart Now重启Eclipse:
520c9a6747f3b75aa81ec4299256f3d4.png
在这个工程选择页面中能看到SVN夹子,表示安装成功:
70828863df0ea866716bc54d1322e4ef.png
现在就可以在Eclipse中使用SVN插件了,先右键点击一个工程,然后点击Team里的Share Project进入到以下界面:
58d011699271fe3239391db01d155ac3.png
e667825e340a1ced5ed0e60714f13fac.png
配置新的资源库:
1d4a415af1cd515ab47bd6186d26ea51.png
使用已有的资源库:
55948c14f9502da09d9c499552e148b7.png
d5b73073be38b84f123753812ac0e95d.png
如果出现以下错误就检查一下是否安装了Subversive Connector,如果没有安装则需要手动安装:
71175d04d8193b93c7f2d86a96b92980.png
进入以下界面查看Subversive Connector:
4b1b9ff915edd6b0849c857bd8beaa9b.png
没有安装的话可以点击Get Connecto通过网络安装:
f08b9c192495c88f76a3daddbafbb624.png
b19178280311ca4f469d2096a4986ebc.png
4f37dc2aaa8b6e2651a5ccfe57cfed8e.png
176b0a18b259ff6d302ef7f1ee79d9e8.png
e9a5c5b89ed60cd6cc8cefbfe64e2ad1.png
等待安装完成:
400ca0575a037973d002086e8c7c5738.png
可能会出现这个警告:
d1fe073c6f101272f81ea5a1db15f97f.png
安装完成,点击Restart Now重启Eclipse:
345f27359c9e0fcec81f24e7e9f1799f.png
如果无法通过Get Connecto安装的话就自行去官网下载压缩包,然后使用Eclipse的本地安装:
e784df4aae7291904729f6f1ebdb2c68.png
压缩包下载地址:
https://polarion.plm.automation.siemens.com/products/svn/subversive/download
解压后把文件复制到Eclipse的安装目录下,然后重启Eclipse:
f33d2222616a334b9477618bb6d70072.png
最后设置一下Subversive Connector:
996689b18a608b7b1b83396b25ae015b.png
接着进行之前没完成的最后一步操作,这一步会把这个工程上传到服务器里:
1b08c0468157d372d493ba0364573841.png
a815be5db3c1aab308b24b8df6cec6c5.png
工程目变成这样,并且Team里多了很多的选项代表配置成功:
4636c3cc294d666e9f6128a4773363c1.png
c2665f2515614ecb0f42fc9bd5a80ad7.png
现在可以做个实验,写一个类里面写一些代码,然后将工程提交到SVN服务器,然后在另一个Eclipse里下载这个工程:
代码示例:
6e17dde9cf408c3a7b212267de36a4cf.png
点击Commit提交:
44486eb722f3dfca8f759cabc5abd6f8.png
提交完成后在另一个Eclipse下载这个工程的文件,正在下载之前先记得更换一下Subversive Connector,然后右键弹出菜单点击Import进入到以下界面:
35b56709a926236c88501e0e291b518f.png
4fd63caa2d5122541cbc3af806c3d56e.png
d3d4f4b5ef1acc12de89fee2a6b2c235.png
bc2efb7eb6ebcff16874e88ad9331f93.png
2dc2991c6d021ea93fdacbcaa3b9faa5.png
d6f19c9b2d2ffa1e6f866863a1104b97.png
6485ed09f8cf69262e2743d10a326d5f.png
下载成功:
4e3b31b14366bd0cbd76e3ab34ab5199.png
更新工程:
例如我再写几行代码然后提交到服务器上,让其他的Eclipse更新:
6513e2ca54382b9466327b7ad59523cf.png
9773ec4b7a8acda88db8f90fddff40ee.png
然后在另一个Eclipse中点击update更新:
5d512f1834e6311a0b77b1ae0adc6a00.png
刚刚写的代码一个不漏地更新下来了。
工程版本冲突示例:
例如我又写了几行代码,然后提交到服务器上,接着另一个Eclipse也增加了几行代码并且也提交到服务器上,这时因为我是先提交的,所以后提交的这个工程就会出现冲突报错:
e11ec1a5506c8f4dfee2babda9709d7f.png
8c27612929693e105df0e80a979c8bc3.png
a36f5e559e85c3cc20b3b3008df66672.png
92313364fa1075b6b6deffcf2bdaaec4.png
97192a45b5935a0297c65582ea20a967.png
1548fcf19d47150c8637b691d0a64add.png
111df0349dfdf4045373a85a2ba541a3.png
4d5ce4c225c56c1458f91d2792cfc3e5.png
d597690650c39caf91d01d10e51ac8f9.png
350d0838530c1279ea35adc7a15062e6.png
2c2c0a7d6fed1e6f65093e3dc46f793d.png
结果报错了,提交失败,项目已过期:
2949dadef4047d65651e398797c78d4d.png
c32a25e5297f566a61775000486d51c8.png
由此可见SVN能很好地管理工程版本冲突的问题。
然后进行更新工程还能看到帮你把冲突的代码列出来了:
a9eb29eb8a490b59b7167d0d7473e856.png
SVN还可以锁定工程,锁定之后别人就无法对这个工程进行提交,例如我先进行工程提交然后再把工程锁定:
74929f73b46e988f1b7145a1c4e91981.png
点击:
092d6470c1057ba4c1e6a334d71769d9.png
c9798d76000e9dc6f27b068a573d590b.png
689f5a86b58e4a928f88119385767d52.png
现在另一个Eclipse要提交这个工程就会报错了:
b826dd55ea217f98a1ffe0bf83852202.png
2918bcca767bcfe362268608c6b1fc2e.png
SVN的常用功能就以上几种,提交、更新、锁定工程、从服务器导入工程等等。