最近由于学校放假,不给留宿,所以一直忙于找房子,今天终于安顿下来了,之前总以为这一天离我还很远,没想到竟然来的这么快。不过也好,迟早都要来的,早来早面对。凡事都有他的好的一面,只要我们心是向阳的。就好比今天我与大家分享的话题,SVN VS Git。
我对版本控制工具用的不多,目前最常用的就是SVN,但是说实话我对它内部的实现细节还是不清楚。最近刚好接触了git,跟一位资深的工程师交流后,才对这两款版本控制器有了一个清晰的认识。下面我就个人的一点总结跟大家分享下:
首先版本控制系统呢是为了更加高效的管理一个团队开发的项目,对参与开发人员提供一个高效,高质量的共同协作开发的环境。下面我们详细介绍其中两种:
Git:
Git是一个成功的开源项目,因为他有一个好的故事。git其实开始目的是为了开源系统Linux服务的,因为曾经一个免费为Linux提供项目管理的工具突然提出收费,所以Linux决定自己开发一款可以帮助维护代码的工具,免得日后再出现这种滑稽的事情,因此他的名字取为git,非常滑稽的一个名字,就是提醒自己以后别犯同样的错误。git因此而得名,从此走上一条免费的不归路。他的出现,给我们带来了很大的帮助,据说微软现在特别依赖git。确实如此,当我第一次接触后,感觉完全不一样与传统的版本控制器,他突破了传统的版本控制工具的固有模式。
1.典型的分布式系统。采用分布式原理实现,这样对于集中式版本控制工具解决了一个问题,就是单点问题,万一server出现问题,项目不会因此而遭到损失。
2.文件系统。版本控制系统,其实更加像一个文件管理系统。
3.他的运作方式就是每次只关注整体文件的变化,不关注细节,如果文件有变化则会做一个镜像出来,如果文件没有变化,就会产生一个指向原文件的链接。
他在时间成本方面控制的非常好,速度非常的快,与文件的大小没有关系。但是在空间上面就显的比较弱势。个人觉的以现在的科技,容量不是问题,时间更加珍贵一些。
SVN:
我想大部分人都对svn比较熟悉,没有用过的也有听过,因为在学校老师一定会提到它。所以我就在这里不卖弄了(怕出丑<^^>)。svn同样是版本控制器界非常优秀的工具。
它的工作流程是:
1.在server上download项目。
2.开始在自己那部分做操作。
3.完成相应的操作后,重新像server提交自己修改的部分。
大概流程就是这样的,看上去比较简单,但是实际是比较复杂的。有几点需要清楚,我们所有开发人员共同使用一个server提交代码,提交update的部分首先保持网络是通的。在每次提交时首先要update到本地,保证与server的一致,然后再把自己修改的那部分commit上去。SVN在这个过程中更加注重文件内部的变化。所以与git相比而言速度要慢,但是他不会像git那样只要文件有改变就做镜像,在考虑空间上面是优先选者。本来想多聊会SVN,但还是算了,因为我对SVN确实不够了解,所以有些内容不能胡乱表达,这样对一个初学者是不公平的。
内容有些凌乱,只有当把自己认为理解的东西表达出来时,才发现你根本还没有理解,所以每次还是很有勇气写下这些乱七八糟的东西,希望自己也可以从中再次学习。