我在Ubuntu上使用Apache Subversion(SVN)。我有一个文件用于多个子项目。因此,我使用硬链接到同一文件。
在svn commit
之后,似乎硬链接变成了独立的文件(链接计数变为1)。
SVN是否可以保留硬链接?
自2004年1.1版本起,Subversion支持符号链接。
硬链接不被识别并且被处理为普通文件。
对符号链接进行版本控制
在非Windows平台上,Subversion能够对特殊类型的文件——符号链接(或“symlink”)进行版本控制。符号链接是一种文件,它充当了文件系统中某个其他对象的透明引用,允许程序通过对符号链接本身执行操作来间接地读取和写入这些对象。
当一个符号链接被提交到Subversion仓库时,Subversion会记住该文件实际上是一个符号链接,以及该符号链接“指向”的对象。当该符号链接被检出到非Windows系统上的另一个工作副本时,Subversion会从版本化的符号链接重建一个真正的基于文件系统的符号链接。但这并不以任何方式限制了在不支持符号链接的系统上使用工作副本的可用性,例如Windows。在这样的系统上,Subversion只是创建一个常规文本文件,其内容是原始符号链接所指向的路径。虽然该文件不能在Windows系统上用作符号链接,但它也不会阻止Windows用户执行其他与Subversion相关的活动。
硬链接是普通的文件。你只能通过链接计数大于1来知道它链接到了更多位置。
一个可以做到在每个项目中都拥有相同文件的方法是使用svn externals。这样,一个项目将拥有你想要共享的文件,而所有其他项目将使用该文件。
你可以在这里了解更多关于svn externals的信息。