我最近不得不重新考虑以前维护者的一些代码,最初我不得不做很多转移目录并重命名et-all。这是相对少量的代码,因此比较大小并没有真正揭示太多。鉴于subversion将始终保留每个版本,这不会爆炸吗?
我假设
repo/trunk/bobbyapple
转移到
repo/branches/oldapple
将被视为基于路径的不同历史,并且subversion将以不同方式保留这些历史(move = copy + delete)。因此,如果一个人在大目录周围移动,这很快就会爆炸大小?
答案 0 :(得分:6)
SVN中的复制基本上是免费的,更改存储为差异。所以不,这不会“爆炸”大小。
答案 1 :(得分:1)
SVN创建“廉价副本”,它不会真正制作任何内容的副本,它只会创建副本中已更改的文件的新版本。它在这里引用:
Subversion的存储库有一个特殊的设计。复制目录时,您不必担心存储库增长巨大 - Subversion实际上并不复制任何数据。相反,它会创建一个指向现有树的新目录条目。如果您是Unix用户,这与硬链接的概念相同。从那里,副本被称为“懒惰”。也就是说,如果您对复制目录中的一个文件进行更改,则只更改该文件 - 其余文件将继续作为原始目录中原始文件的链接存在。
参考: http://svnbook.red-bean.com/en/1.0/ch04s02.html#svn-ch-4-sect-2.1