git:
1.版本库本地化,支持离线提交,相对独立不影响协同开发。每个开发者都拥有自己的版本控制库,在自己的版本库上可以任意的执行提交代码、创建分支等行为。例如,开发者认为自己提交的代码有问题?没关系,因为版本库是自己的,回滚历史、反复提交、归并分支并不会影响到其他开发者。
2.更少的“仓库污染”。git对于每个工程只会产生一个.git目录,这个工程所有的版本控制信息都在这个目录中,不会像SVN那样在每个目录下都产生.svn目录。
3.把内容按元数据方式存储,完整克隆版本库。所有版本信息位于.git目录中,它是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。
4.支持快速切换分支方便合并,比较合并性能好。在同一目录下即可切换不同的分支,方便合并,且合并文件速度比SVN快。
5.分布式版本库,无单点故障,内容完整性好。内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
SVN:
1.服务器公司统一控制管理,在很多情况下,一个集中式的数据仓库却是更合适的。例如,如果你有一些核心代码想只允许部分人能访问,把它放到git里必然是你不希望的。很多的企业都是将它们的代码集中管理的,如此说来所有(重要)政府项目估计都使用的是集中式数据仓库的版本控制系统。
2.安全机制, 不会每个人都拷贝一份, 可以对组员限制, 也可以分配不同组
3.团队合作开发起来传递的数据量不会过大, git因为都是镜像, 如果有个美工传个500mb的psd, 不相关的人员也要去下载, 很浪费流量和更新时间
4.subversion感觉搭建非常简单支持https, 可以外部网络访问, 可以让员工在家办公, 也不用担心传递数据的流量(好邪恶)
5.每个人的电脑大小不一定能装下特别大的项目, 对于svn来讲, 公司配备一个足够大的服务器硬盘就好了, 而且哪个项目完成, 直接删掉本地目录就好, 完全没有保留的必要
6.网游公司, 广告公司这些需要大量媒体设计混合到程序的项目中, 很需要svn这样的服务器.
7.svn相对于git分支确实弱爆了, 但是并不能通过鄙视svn就能把所有人的习惯改过来.
两者思维上的比较:
Subversion的理念符合常规思维 这是说,很多人(特别是管理者或老板)对版本号有一种习惯的认识,把开发视作一种按时间的线性发展轨迹,这在他们脑子里根深蒂固。并不是找借口,Git的随意性并不是很容易去理解,客观的认识。 Subversion只提供一种途径...
结论:两者的区别还是比较大的,使用哪一种视情况而定
1.版本库本地化,支持离线提交,相对独立不影响协同开发。每个开发者都拥有自己的版本控制库,在自己的版本库上可以任意的执行提交代码、创建分支等行为。例如,开发者认为自己提交的代码有问题?没关系,因为版本库是自己的,回滚历史、反复提交、归并分支并不会影响到其他开发者。
2.更少的“仓库污染”。git对于每个工程只会产生一个.git目录,这个工程所有的版本控制信息都在这个目录中,不会像SVN那样在每个目录下都产生.svn目录。
3.把内容按元数据方式存储,完整克隆版本库。所有版本信息位于.git目录中,它是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。
4.支持快速切换分支方便合并,比较合并性能好。在同一目录下即可切换不同的分支,方便合并,且合并文件速度比SVN快。
5.分布式版本库,无单点故障,内容完整性好。内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
SVN:
1.服务器公司统一控制管理,在很多情况下,一个集中式的数据仓库却是更合适的。例如,如果你有一些核心代码想只允许部分人能访问,把它放到git里必然是你不希望的。很多的企业都是将它们的代码集中管理的,如此说来所有(重要)政府项目估计都使用的是集中式数据仓库的版本控制系统。
2.安全机制, 不会每个人都拷贝一份, 可以对组员限制, 也可以分配不同组
3.团队合作开发起来传递的数据量不会过大, git因为都是镜像, 如果有个美工传个500mb的psd, 不相关的人员也要去下载, 很浪费流量和更新时间
4.subversion感觉搭建非常简单支持https, 可以外部网络访问, 可以让员工在家办公, 也不用担心传递数据的流量(好邪恶)
5.每个人的电脑大小不一定能装下特别大的项目, 对于svn来讲, 公司配备一个足够大的服务器硬盘就好了, 而且哪个项目完成, 直接删掉本地目录就好, 完全没有保留的必要
6.网游公司, 广告公司这些需要大量媒体设计混合到程序的项目中, 很需要svn这样的服务器.
7.svn相对于git分支确实弱爆了, 但是并不能通过鄙视svn就能把所有人的习惯改过来.
两者思维上的比较:
Subversion的理念符合常规思维 这是说,很多人(特别是管理者或老板)对版本号有一种习惯的认识,把开发视作一种按时间的线性发展轨迹,这在他们脑子里根深蒂固。并不是找借口,Git的随意性并不是很容易去理解,客观的认识。 Subversion只提供一种途径...
结论:两者的区别还是比较大的,使用哪一种视情况而定