1

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

但是这本书还说“就 Subversion 而言,这两个提交影响了不同存储库位置的不同文件。” 在“使用您的分支”一章中。

我认为这些是矛盾的。如果分支是主干中修订的硬链接,则对分支的提交应该会影响主干,更不用说分支本身了。

“两个提交影响不同存储库位置的不同文件”怎么可能?

4

2 回答 2

2

是的,SVN 使用类似于硬链接的东西来引用相同版本的文件。但是,一旦您修改了文件,它就会从该硬链接中分离出来,以创建该特定文件的修订版。分支的问题是大多数时候您只更改数百个文件中的几个。因此,与“廉价复制”的处理是使分支既节省时间又节省存储。

正如您所指的文件所说:

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

随着对复制目录下的文件和目录的进一步更改,Subversion 继续尽可能地使用这个硬链接概念。只有在需要区分不同版本的对象时,它才会复制数据。

于 2013-01-21T02:53:55.993 回答
1

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

但是,如果某些内容被提交到该分支,则会通过“冒泡”方法创建一个新修订版。因此,该分支不再是简单的硬链接。

关于“冒泡”的文件有很大帮助。

于 2013-01-22T12:19:33.693 回答