所以是的,我只是想知道darcs是否具有与git的子模块等效的功能。
也就是说,假设我有一个仓库(myapp),并且其中有一个名为mylibrary的文件夹。 mylibrary实际上与myapp的开发没有任何关系,只需要包含它即可。 mylibrary的开发发生在它自己的存储库中,但是当有人拉出myapp时,它还会拉出mylibrary的最新版本。有任何想法吗?
最佳答案
我的第一个想法:由于darcs比git更简单(即,没有分支和远程对象,而是只使用目录和URL,而这是管理它们的任务),因此darcs子模块所提供的功能不会比您实现的更多darcs repo中的子目录或文件之类的标准内容。
因此,子模块真正有趣的目标可能不仅是告诉人们从何处获取库源代码(正如您在问题中所写的那样),而且还要记录您实际用于编译项目的子项目的状态,而不是为那些不想获得子项目源的人膨胀您的仓库。
可能还可以通过存储有关子项目状态的更复杂的元数据,以及更复杂的钩子(Hook)来获取子项目的状态(或选择地,另一种状态)来实现此目标。来自文档的AFAIK,没有用于此类子模块的内置机制。
更新(可在darcs网站上找到):
因此,darcs将在您的工作区中发现另一个darcs repo ,并且不会触及它。因此,我上面建议的第一种方法是关闭(如果将darcs元数据保留在那里)。
第二种方式就像在后一个链接的一节中建议的那样。 (他们建议使用“uglu”脚本来表示这样的内容。)
另一个(第三个)想法
从您打算作为子模块的仓库中导入补丁,但首先将所有文件移至子目录中。如果可能只应用一次这样的移动特殊补丁,并且对所有的补丁都有效,则从打算作为子模块的仓库中导入,而不是从主仓库的“分支”中导入的补丁。 ..
...嗯,这可能是
pull
命令(例如import
)和push
命令(例如export
)的特殊变体,可以相应地转换路径。