版本控制系统技术演进史,从SCCS到Git(15)

创建Subversion存储库后 , 将创建一个空的文件和文件夹数据库作为其一部分 。 将创建一个名为db/revs的目录 , 其中存储了已检入(已提交)文件的所有修订跟踪信息 。 每次提交(可以包括对多个文件的更改)都存储在revs目录中的新文件中 , 并以从1开始的顺序数字标识符命名 。 当首次提交文件时 , 将存储其全部内容 。 为了节省空间 , 同一文件的在次提交时候将仅存储变化部分 , 也称为diffs或deltas 。

另外 , SVN还使用lz4或zlib压缩算法压缩增量 , 以进一步减小其大小 。

尽管每次都存储文件增量而不是整个文件确实节省了存储空间 , 但由于需要将所有增量捆绑在一起以重新创建文件的当前状态 , 因此增加了检出和提交操作的时间 。 默认情况下 , Subversion在存储文件的新完整副本之前 , 每个文件最多可以存储1023个增量 。 这样可以实现存储和速度之间的良好平衡 。

SVN不使用常规的分支和标记系统 。 一般的Subversion存储库布局是在根目录中包含三个文件夹:

trunk/

推荐阅读