最经典SVN入门教程、

1. 什么是SVN

SVN全名Subversion,即版本控制系统。SVNCVS一样,是一个跨平台的软件,支持大多数常见的操作系统。

 

作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个*资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。

 

这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。

 

Git – 版本控制系统

 

SVN是集中式Git是分布式

1.1. SVN工作原理

 最经典SVN入门教程、

 

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

1、 多人共享同一的资源,并且可以对资源实现修改和更新;

2、 记录资源的每一次变更以及记录更改该资源的人并且可以恢复到之前的任何一个修改点

2. 安装

SVN的安装分为2部分,第一部分是服务端安装,第二部分的客户端安装。

 

注意一般情况下我们只需要安装客户端即可因为在企业中服务端是否运维来维护的,我们只需要开通一个账号即可。

 

常用的客户端又分为2种,第一种是安装在操作系统中的客户端,另外一种是Eclipse的插件。

 

2.1. 服务端安装(windows

 最经典SVN入门教程、

 

选择相应的文件安装


 最经典SVN入门教程、

最经典SVN入门教程、


最经典SVN入门教程、


最经典SVN入门教程、


最经典SVN入门教程、

最经典SVN入门教程、


安装完成后会在系统服务中有SVN服务项并且默认是开机启动

 

  最经典SVN入门教程、

打开管理工具

 最经典SVN入门教程、

 

至此服务端安装完成

2.2. 客户端安装

 

 最经典SVN入门教程、

先安装客户端再安装语言包

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、


最经典SVN入门教程、


最经典SVN入门教程、

点击右键查看是否有SVN选项

 最经典SVN入门教程、

 

 

接下来安装语言包

 


 最经典SVN入门教程、

最经典SVN入门教程、

 

 

 

选择中文

 最经典SVN入门教程、

 最经典SVN入门教程、

 

中文生效

 最经典SVN入门教程、

 

此处客户端安装完成

2.3. Eclipse插件安装

 最经典SVN入门教程、

3. 创建资源库和用户

3.1. 创建用户

 

 最经典SVN入门教程、

最经典SVN入门教程、

 

3.2. 创建资源库

资源库用户提交文件到SVN存放文件的仓库

 

 最经典SVN入门教程、

最经典SVN入门教程、

 

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

 

我们选择自定义权限

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

 

创建完成

最经典SVN入门教程、

最经典SVN入门教程、


 

 

测试

 最经典SVN入门教程、

 

 最经典SVN入门教程、

资源库创建完成。

3.3. 使用客户端访问

 

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

 

测试导入文件

 

 

 

 

搞定

4. SVN协议

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

1、 http

a) 客户端和浏览器都可以访问

2、 https

a) 客户端和浏览器都可以访问同时比http更安全

3、 svn

a) 只能通过客户端访问

5. 资源仓库

SVN资源仓库中有三个非常重要的目录trunk(主干)、branches(分支)、tags(标签),其作用是:

 

这三个目录都是可以存放文件的,只是在功能方面有一些区别(只是约定):

 最经典SVN入门教程、

trunk一般的项目都是基于主干开发的

branches分支一般用于有某些开发功能时需要基于主干开分支开发完成后要合并到主干

tags标签项目开发完成后发布上线时需要将主干的代码打标签到tags一般情况下tags的内容是只读的

 

这三个目录在实际项目开发过程中的应用

 

 

6. SVN项目实战

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

6.1. Eclipse中创建SVN连接

 最经典SVN入门教程、

最经典SVN入门教程、

 

6.2. 将项目发布到SVNtrunk

 最经典SVN入门教程、

 

分别创建trunkbranchestags

 

 

 最经典SVN入门教程、

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、


 

与资源库进行同步(比较不同):

 

 最经典SVN入门教程、

最经典SVN入门教程、

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

这么多内容都是应该提交到SVN的吗

不是的对于Maven项目而言只提交srcpom.xml即可

 

 

 

提交pom.xml

 

 最经典SVN入门教程、

 最经典SVN入门教程、

 

每次执行与资源库同步时都会有以上内容,会影响每次提交的选择,所以可以选择将这些目录文件忽略掉。

6.3. 忽略指定的资源

6.3.1. 全局指定

 最经典SVN入门教程、

最经典SVN入门教程、

 

6.3.2. 单个指定

 

 最经典SVN入门教程、
最经典SVN入门教程、

最经典SVN入门教程、

 

 

 

删除忽略

 最经典SVN入门教程、

最经典SVN入门教程、

 

6.4. 提交代码

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

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

 

 

注意不建议直接提交因为该文件可能会被其他人修改从而造成冲突推荐在提交(更新)之前先执行与资源库同步

 

 

 

6.5. 更新代码

为了演示效果在桌面将itcast-mybatis项目检出check out),并且修改其中的文件完成提交。

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

 

 

可以双击文件查看差异

 最经典SVN入门教程、

 

然后Eclipse中将项目与资源库同步

 

 最经典SVN入门教程、

最经典SVN入门教程、

最经典SVN入门教程、

 

 

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

什么是冲突

 

冲突就是在同一个版本基础之上多个人对该文件修改了修改其中一个人将文件提交到SVN这时该文件已经是新的版本但是其他人的本地还是旧的版本

这时其他人并不知道该文件已经有了新的版本执行提交操作这时就产生了冲突

 

解决冲突的核心思想为了避免冲突要在最新的版本之上修改(也就是说修改之前先更新),再提交。

 

如果我更新了之后在编写代码的同时别人将该文件再次更新(我不可能时时刻刻都查看更新),这时直接提交会造成冲突,正确的做法是:提交之前将该文件先执行与资源库同步操作,先将冲突解决掉再提交代码。

 

接下来就需要讨论下个话题了如何解决冲突

 

首先要先明确解决冲突是不能通过工具自动完成的必须人工完成当然了可以借助工具辅助完成

 

下面演示冲突的解决过程

6.6.1. 制造冲突

Eclipse中将文件内容修改,用于模拟用户1修改文件:

 最经典SVN入门教程、

 

然后在桌面中的目录中修改该文件用于模拟用户2修改文件:

 最经典SVN入门教程、

 

这时先将桌面中的文件提交

 最经典SVN入门教程、

最经典SVN入门教程、

 

提交成功

 最经典SVN入门教程、

Eclipse中将项目与资源库同步

 

6.6.2. 解决冲突(关键内容来了)

1、 双击打开该文件,查看冲突的内容

最经典SVN入门教程、

2、 将远程更新的内容写到本地

最经典SVN入门教程、

3、 将该文件标记为合并(注意,一定是已经处理完冲突了才能标记,要不然会将服务端的文件覆盖掉)

最经典SVN入门教程、

4、 现在就可以大胆的提交

最经典SVN入门教程、

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

有些时候可能会是这种情况

 

服务端文件的内容被大量的修改,如果按照上面的方法一个个解决,非常的麻烦,这时你可以尝试以下的解决方案:

 

1、 备份本地的文件

2、 将该文件执行 还原 操作,并且再执行 更新 操作(也就说,放弃自己的修改,更新到最新的版本)

最经典SVN入门教程、

3、 将备份文件中修改的内容,拷贝(不是全部啊,只是自己修改的部分内容)回该文件,再执行提交就OK了。

 

总结这种解决方案的核心思想是放弃自己的修改把本地文件更新到最新版本在最新版本基础之上修改并且提交