我读到SVN的“分支”使用了修订版的廉价副本(硬链接)。链接在这里。 http://svnbook.red-bean.com/en/1.7/svn.branchmerge.using.html “创建分支”一章讨论了这一点。
但该书还说'就Subversion而言,这两个提交会影响不同存储库位置的不同文件。'在“与你的分支合作”一章中。
我认为那些是矛盾的。 如果分支是中继中修订的硬链接,则对分支的提交应该影响主干,而不是分支本身。
如何才能“两个提交影响不同存储库位置中的不同文件”?
答案 0 :(得分:2)
是的SVN使用类似于硬链接的东西来引用相同修订版的文件。但是一旦修改了文件,它就会从该硬链接中分离出来以创建该特定文件的修订版。分支的事情是,大多数情况下,您只需更改数百个文件。因此,“廉价复制”的交易是为了实现时间和存储效率的分支。
正如你指出的文件所说:
Subversion的存储库有一个特殊的设计。当你复制一个 目录,您不必担心存储库的增长 huge-Subversion实际上并不复制任何数据。相反,它 创建一个指向现有树的新目录条目。如果 你是一个经验丰富的Unix用户,你会认识到这一点 硬链接背后的概念。
随着对文件和目录的进一步更改 复制目录,Subversion继续使用这个硬链接 它可以的概念。它只在必要时复制数据 消除不同版本的对象的歧义。
答案 1 :(得分:1)
在'svn copy'之后,分支实际上是修订的硬链接。
但是如果某个东西被提交到那个分支,那么通过'冒泡'方法创建一个新的修订版。 所以这个分支不再是一个简单的硬链接。
关于'bubble-up'的文件有很大帮助。