我有一个包含大量源文件的git存储库。我想创建一个新的存储库,其中现有存储库中的一些文件被引用到新存储库中。
示例:
存储库A包含:
在Repository B中,我想引用Repository A中的源文件3:
存储库B将在没有访问存储库A的开发人员之间共享。
所以我的问题是:是否可以将一些文件从一个存储库引用到另一个存储库,这样当有权访问存储库A的开发人员更改原始文件时,存储库B会发现这些更改?如果有可能,我该怎么办?
答案 0 :(得分:2)
Git认为文件是整个存储库的内容,而不是文件集合。因此这很难做到。如果此功能很重要,我建议您切换到以文件为中心的SCM系统。
然而这是可能的,但非常笨拙。
使用您要跟踪的文件在repo B中创建一个孤儿分支。将此文件合并到repo B中的其他分支,例如主分支,可以使用子树合并算法。
您可以使用gitolite限制从您的仓库访问一个分支。现在,您可以将repo B添加到repo A作为子模块或远程并进行子树合并。 (您可以在git-scm.com上阅读有关如何处理子模块和子树合并的更多信息。)
但是,你不能使用gitolite来拒绝整个repo B的读取,只需写入访问权限。如果您正在寻找读取预防,则需要将文件放在repo C
中答案 1 :(得分:0)
我们用于在仓库之间共享代码的解决方案是将共享代码放入NuGet包中。然后,可以从任何存储库中使用该软件包,而不必进行任何奇怪的git设置,并且可以按原样保留访问控制。