git 和 svn

5个区别,参考:http://www.vaikan.com/5-fundamental-differences-between-git-svn/ html

1. Git是分布式的,SVN是集中式的,好处是跟其余同事不会有太多的冲突,本身写的代码放在本身电脑上,一段时间后再提交、合并,也能够不用联网在本地提交;git

2. Git下载下来后,在本地没必要联网就能够看到全部的log,很方便学习,SVN却须要联网;安全

3. Git鼓励分Branch,而SVN,说实话,我用Branch的次数还挺少的,SVN自带的Branch merge我还真没用过,有merge时用的是Beyond Compare工具合并后再Commit的;服务器

4. Tortoise也有出Git版本,真是好东西;app

5. SVN在Commit前,咱们都建议是先Update一下,跟本地的代码编译没问题,并确保开发的功能正常后再提交,这样其实挺麻烦的,有好几回同事没有先Updata,就Commit了,发生了一些错误,耽误了你们时间,Git可能这种状况会少些。分布式

SVN工做流程:
svn

开始新一天的工做:函数

一、从服务器下载项目组最新代码。工具

二、进入本身的分支,进行工做,每隔一个小时向服务器本身的分支提交一次代码(不少人都有这个习惯。由于有时候本身对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时本身修改了哪些代码,就须要这样作了)。学习

三、下班时间快到了,把本身的分支合并到服务器主分支上,一天的工做完成,并反映给服务器。

这就是经典的svn工做流程,从流程上看,有很多缺点,但也有优势。

缺点:1若是不能链接到服务器上,就不能提交,还原,对比等,基本上不能工做。

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

优势:易于管理,集中式服务器更能保证安全性,适合开发人数很少的项目。

Ghoststears:任何事情,归根结底都是人的问题,工具只是工具。

        SVN 是集中式的,会出现你说的耦合。但从另一个方面来讲,这也要求开发人员代码的规范:不要一个函数干不少事情,不要一个文件写不少个类。      另外,将不可运行的代码提交到任何版本控制系统中都是没有意义的。这也就是版本控制的核心思想之一。也就是提交的粒度:原子性。所谓的原子性,也就是完成一件任务,这个任务能够是一个函数声明,也能够是一个函数的实现,亦或是一个子系统。但这个任务的完成的标志就是代码能够运行,不能运行的代码,最多也就是完成了半个任务。这个是不符合版本控制思想的。试想,你 update 到某一个 version 的时候,代码居然是不能运行的,是何心情???另外,不少人都强调:我晚上下班了要在家里干活,不能提交!!!来抨击集中式版本控制工具。且不说对待工做和生活态度。先看看国内的企业,防员工如防贼的多的去了。有多少人能带着笔记本,把公司的源代码签出来呢???版本控制系统中,工具只是其中一环。要结合公司的策略来选用合适的工具。版本控制 != 版本控制工具 !!!= 源代码管理。

相关文章
相关标签/搜索