【问题标题】:Force a version control not to break hard links when merging/pulling from another repo?从另一个仓库合并/拉取时,强制版本控制不破坏硬链接?
【发布时间】:2011-06-01 05:54:15
【问题描述】:

我有一个项目,其中一部分代码是公开的,而另一部分不是。

我在我的企业中的文件夹 E 和一个特定的文件夹 P 中对完整的项目进行了版本化,我将公共部分放在其中。 我认为将硬链接放在文件夹 E 中公共文件的文件夹 P 中是个好主意。

因此,通常的工作流程应该是在企业版本的文件夹 E 上工作,偶尔去文件夹 P 提交公共文件。 (请注意,如果我“单独”工作,效果会很好)

问题是,当我对文件夹 E 中的文件进行一些合并/拉取/变基时,它会替换文件 -> 从而更改它们的 inode -> 因此文件夹 P 中硬链接的文件不会得到更新!

所以我的问题是: 是否有版本控制系统授权选项在合并/拉取/变基时不更改文件的 inode?​​p>

我使用 git(或 git-svn),但我同意切换到这个方便的选项。

谢谢

路易

PS:我已经看到了这个问题 (Git and hard links),但在这里我想利用硬链接来提高工作效率。

【问题讨论】:

    标签: linux version-control hardlink


    【解决方案1】:

    我的建议是使用符号链接;它们不依赖于 inode,而且我知道它们可以在 Subversion 中进行版本控制(我希望 git)。版本控制硬链接将非常困难,因为您的工作副本的一部分可能跨越文件系统边界是合理的 - 尽管这是一个非常糟糕的主意。

    【讨论】:

    • 硬链接不能跨越文件系统边界。只有软链接可以。
    • 是的,我正在这样做,但如果决定移动内部文件夹的路径,它就会变得一团糟。 (就我而言,单个分区上的硬链接限制不是问题)。
    • 您可以使用相对符号链接,因此它们不会依赖于树的位置。 :)
    • @TurboJ - 是的,这就是为什么 VCS 不太可能支持修订树中的硬链接;存储库的工作副本可以跨越文件系统边界,这将使硬链接几乎不可能实现为硬链接。因为任何 VCS 都会假设不支持硬链接,所以 VCS 不太可能具有尊重树中硬链接的检出模式;它会 [正确地] 假设工作副本中没有不受支持的文件。
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2020-01-16
    • 2015-09-14
    相关资源
    最近更新 更多