美文网首页技术干货IT修真院-前端让前端飞
svn和git有什么区别? webstorm怎样配置svn?

svn和git有什么区别? webstorm怎样配置svn?

作者: 大大头大 | 来源:发表于2017-10-16 22:59 被阅读0次

    大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师深度思考中的知识点——SVN和Git有什么区别? webstorm怎样配置svn?


    一.背景介绍

    为什么要说这两款软件的区别?

    这两款版本控制软件应该是现在最流行的版本控制软件。我们在做任务做项目的时候,特别强调要学习使用这两款软件。

    如果是一个人做项目、任务,很难有机会充分感受到它们的优点和坑点。(git还是能感受到)。

    多人合作开发,由于项目的复杂性,一个模块或者一个文件可能需要多人同时编写,这时就能体现出版本控制软件的强大与适用。

    无论是有新需求、bug、文件冲突还是安全性等问题,它们都可以很好的协助我们进行解决。




    二.知识剖析

    简要介绍一下SVN和GIT

    细数版本控制软件,多达十几种,像VSS、CVS、ClearCase、PVCS等等这些我这个菜鸡听都没听说过的软件也曾经有过很多用户。

    游戏公司用Perforce比较多,似乎是因为在二进制文件的支持和大文件存储上,Perforce占优。

    而在开发者眼中似乎只存在SVN和GIT的存在,为什么呢?

    因为它们是开源免费的啊!

    SVN介绍


    SVN是Subversion的简称,是一个开源代码集中的版本控制系统,支持大多数常见的操作系统。作为一个开源的版

    本控制系统,Subversion管理着随时间改变的数据。这些数据集中放置在一个中央资料档案库中。这个档案库很像

    一个普通的文件服务器,它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历

    史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。

    集中式代码管理


    集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:

    开始新一天的工作:

    1、从服务器下载项目组最新代码。

    2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码)。

    3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器.

    Git介绍

    Git是开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。分布式相比于集中式的最大区别在

    于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库.

    分布式代码管理


    分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库服务器。工作的时候,就不需

    要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?

    比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推

    送给对方,就可以互相看到对方的修改了。


    三.常见问题

    1.SVN和Git有什么区别?

    2.webstorm怎样配置svn?



    四.解决方案

    SVN和Git有什么区别?

    1、集中式、分布式

    1.1、SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器

    SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch,merge ,rebase,Git擅长的是程序代码的版本化管理。

    1.2、GIT跟SVN一样有自己的集中式版本库或服务器。

    但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上check out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍然能够提交文件,查看历史版本记录,创建项目分支,对一些人来说,这好像没多大用处,但当你突然遇到没有

    2、版本库与工作区

    2.1、Subversion的工作区和版本库是截然分开的

    Subversion 的工作区和版本库物理上分开:Subversion的版本库和工作区是存储在不同路径下,一般是在不同的主机中,Subversion的企业级部署中,版本库在服务器上,只能通过 https, http, svn 等协议访问,而不能直接被用户接触到。

    2.2、Git的工作区和版本库是如影随形的。

    Git 的版本库和工作区在同一个目录下,工作区的根目录有一个.git的子目录,这个名为 .git的目录就是版本库本身,它是Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。所以千万要小心删除这个文件。

    3、分支管理

    3.1、SVN,分支是一个完整的目录。且这个目录拥有完整的实际文件。如果工作成员想要开啟新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作(安检测试),那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,十分狗血。

    3.2、 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可。无痛无痒。

    3.3、 Git里分支的切换比SVN方便很多。Git的分支名是可以使用不同名字的。例如:我的本地分支名为OK,而在主要版本库的名字其实是master。最值得一提,我可以在Git的任意一个提交点(commit point)开启分支!所以不要吝啬开分支,git开分支的代价很小。(其中一个方法是使用gitk –all 可观察整个提交记录,然后在任意点开啟分支。)

    4、权限管理

    .Subversion通过对文件目录授权来实现权限管理,子目录默认继承父目录的权限。但是也有缺憾,即权限不能在分支中继承,不能对单个文件授权。例如为 /trunk及其子目录的授权,不能继承到分支或者标签中相应的目录下。

    Git 的授权做不到Subversion那样精细。Git的授权模型只能实现非零即壹式的授权,要么拥有全部的写权限,要么没有写权限,要么拥有整个版本库的读权限,要么禁用。

    5、存储方式

    GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

    优缺点比较

              SVN优缺点

    优点:

    1、 管理方便,逻辑明确,符合一般人思维习惯。

    2、 易于管理,集中式服务器更能保证安全性。

    3、 代码一致性非常高。

    4、 适合开发人数不多的项目开发。

    缺点:

    1、 服务器压力太大,数据库容量暴增。

    2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。

    3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

          Git优缺点

    优点:

    1、适合分布式开发,强调个体。

    2、公共服务器压力和数据量都不会太大。

    3、速度快、灵活。

    4、任意两个开发者之间可以很容易的解决冲突。

    5、离线工作。 。

    缺点:

    1、学习周期相对而言比较长。

    2、不符合常规思维。

    3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

    2.webstorm怎样配置svn?


    下载安装sliksvn

    在webstorm上配置sliksvn

    输入svn插件安装的位置


    如何checkout代码

    根据服务器情况选择svn信息,添加好地址就可以导入项目的版本库了。


    SVN服务器地址:

    如何提交代码,


    在文件上选择右键在弹出来的提示框点击commit,就可以看自己更

    改过的文件。


    五.编码实战


    六.扩展思考

    SVN 和 Git 哪个更适用于项目管理?

    SVN更适用于项目管理, Git仅适用于代码管理。

    一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物,  包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态。


    七.更多讨论


    八.参考文献

    参考一:SVN和Git 介绍,区别,优缺点,适用范围总结 

    参考二:版本控制系统-集中式VS分布式

    参考三:使用webstorm上传代码到github

    参考四:为什么很多大企业都在用收费的perforce而不是免费的svn或者git?

    参考五:Git 使用规范流程

    参考六:svn老鸟转用git必须理解的概念

    参考七:话说Svn与Git的区别

    参考八:常见的版本控制管理工具

    PPT连接:

    ppt

    视频链接


    svn和git有什么区别?webstorm怎样配置svn?_腾讯视频

    如果这篇文章对你有帮助,并且使你对修真院免费在线学习感兴趣,可以通过我的链接注册成员会,这会使我得到学分(兑换学时)延长学习时间:

    邀请链接:http://www.jnshu.com/login/1/13374512

    邀请码:13374512

    相关文章

      网友评论

        本文标题:svn和git有什么区别? webstorm怎样配置svn?

        本文链接:https://www.haomeiwen.com/subject/lepluxtx.html