最近买了本《version control with git》的动物书。给自己下了规定,一定要每天看一点。免得像之前的书一样,买了不怎么看,只是偶尔翻翻,有点浪费。目前看到DIFF这章。本章的结尾是比较了git 和 subversion的diff机制。于是想上网查一下具体git和subversion还有些什么比较大的区别。在GIT官方的WIKI上看到一下总结,简单翻译一下:
- Git is much faster than Subversion GIT比 SVN快
- Subversion allows you to check out just a subtree of a repository; Git requires you to clone the entire repository (including history) and create a working copy that mirrors at least a subset of the items under version control. SVN允许从服务器拿库中的某个子目录;GIT要求你clone整个库。
- Git’s repositories are much smaller than Subversions (for the Mozilla project, 30x smaller) git库比subversion小。mozilla项目中小了30倍
- Git was designed to be fully distributed from the start, allowing each developer to have full local control GIT完全基于分布式设计,开发人员具有代码库的完全控制。
- Git branches are simpler and less resource heavy than Subversion’s git分支比subversion好用且省资源。
- Git branches carry their entire history git分支带有完整历史记录
Merging in Git does not require you to remember the revision you merged from (this benefit was obviated with the release of Subversion 1.5)- Git provides better auditing of branch and merge events。 git提供更好的分支合并的检查。
- Git’s repo file formats are simple, so repair is easy and corruption is rare. git的repo文件系统简单,易于修复,也不容易损坏。
- Backing up Subversion repositories centrally is potentially simpler – since you can choose to distributed folders within a repo in git.
- Git repository clones act as full repository backups. git中clone就是整个库的备份
- Subversion’s UI is more mature than Git’s. svn的UI比git的UI成熟。
- Walking through versions is simpler in Subversion because it uses sequential revision numbers (1,2,3,..); Git uses unpredictable SHA-1 hashes. Walking backwards in Git is easy using the “^” syntax, but there is no easy way to walk forward. SVN的版本号人性化,git中使用SHA1作为commit标识。难懂。
总的来说GIT先进很多。但是也并非什么都比SVN好。其中我觉得它那SHA1的commit ID就很难用。在图形化的git中还好,但是命令行下要输入commit ID真是累。SVN使用上必须要建立一个服务器就很麻烦,这点远不如git来的轻量。也是我个人比较喜欢git的主要原因。或者说这也是分布式SCM的主要优点。
我来过了,看看。博主你的博文不错啊,我会继续支持你的
写的好!
我尝试点击你的副标题AV,但是当我鼠标移动到AV字眼的时候,我失望了。字体什么没有任何改变,我又自我欺人的点了一下,没有东西,博主,你坑爹呢!!!
那不是链接,那是对本博客的描述,AV也不是你喜欢的那种,只是表示audio-video.哈哈。。
关于git repositories尺寸小的结论,我有一点疑惑,我想知道这个比较是否是在记录了相同的信息量的前提下比较的?比如,我用git clone一个分支,然后在这个分支上面做了很多改动,并提交了很多次,最后推送到中心服务器,那么我在本地的那些提交记录是否也会被一并推送到中心服务器,还是只推送最后的结果?如果只推送最后 结果,那么实际在中心服务器丢失了很多中间修改的信息,那么尺寸小是应该的,但是你要清楚,这个尺寸小是以丢失信息为代价的。如果你想保留所有信息,那么在git上你除了要维护一个中心服务器以外,还要维护所有的本地repositories,我觉得这样不如像svn那样,只维护一个中心服务器简单。在git上,如果你想用一个中心服务器维护所有的信息,那么你需要每做完一个修改,先提交到本地repository,然后再推送到中心服务器,需要2步来完成svn里面一步需要做的事情,感觉很麻烦。
应该不是你想的那样因为丢失记录才小的。