SVN分支中的廉价复制(硬链接)

时间:2013-01-21 02:47:41

标签: svn branch commit hardlink

我读到SVN的“分支”使用了修订版的廉价副本(硬链接)。链接在这里。 http://svnbook.red-bean.com/en/1.7/svn.branchmerge.using.html “创建分支”一章讨论了这一点。

但该书还说'就Subversion而言,这两个提交会影响不同存储库位置的不同文件。'在“与你的分支合作”一章中。

我认为那些是矛盾的。 如果分支是中继中修订的硬链接,则对分支的提交应该影响主干,而不是分支本身。

如何才能“两个提交影响不同存储库位置中的不同文件”?

2 个答案:

答案 0 :(得分:2)

是的SVN使用类似于硬链接的东西来引用相同修订版的文件。但是一旦修改了文件,它就会从该硬链接中分离出来以创建该特定文件的修订版。分支的事情是,大多数情况下,您只需更改数百个文件。因此,“廉价复制”的交易是为了实现时间和存储效率的分支。

正如你指出的文件所说:

  

Subversion的存储库有一个特殊的设计。当你复制一个   目录,您不必担心存储库的增长   huge-Subversion实际上并不复制任何数据。相反,它   创建一个指向现有树的新目录条目。如果   你是一个经验丰富的Unix用户,你会认识到这一点   硬链接背后的概念。

     

随着对文件和目录的进一步更改   复制目录,Subversion继续使用这个硬链接   它可以的概念。它只在必要时复制数据   消除不同版本的对象的歧义。

答案 1 :(得分:1)

在'svn copy'之后,分支实际上是修订的硬链接。

但是如果某个东西被提交到那个分支,那么通过'冒泡'方法创建一个新的修订版。 所以这个分支不再是一个简单的硬链接。

关于'bubble-up'的文件有很大帮助。