与GIT相比,对于创建一个包含100个文件的分支目录,两者的相对成本对比如何?哪个成本更便宜?
廉价副本
Subversion版本库有一个特殊的设计。当你复制一个目录时,你不需要担心版本库会变得非常庞大——Subversion实际上并不会复制任何数据。相反,它创建一个新的目录条目,指向现有的树。如果你是一位经验丰富的Unix用户,你会认识到这与硬链接背后的概念相同。在复制的目录下面的文件和目录进行更改时,Subversion继续使用这个硬链接的概念。只有在需要消除对象的不同版本时才复制数据。
这就是为什么你经常听到Subversion用户谈论“廉价副本”的原因。无论目录有多大,制作副本只需要极小的时间和空间。事实上,这个特性是提交在Subversion中工作的基础:每个版本都是前一个版本的“廉价副本”,其中有一些项目被惰性地更改了。(要了解更多信息,请访问Subversion的网站,并阅读Subversion设计文档中关于“冒泡”方法的介绍。)
当然,这些复制和共享数据的内部机制对用户来说是隐藏的,用户只看到树的副本。主要的点在于,复制是廉价的,无论是时间还是空间。如果你在版本库中创建一个完全分支(通过运行svn copy URL1 URL2),这是一个快速的、恒定时间的操作。随意制作分支。
阅读 SVNBook!