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