8

我有一个包含大量源文件的 git 存储库。我想创建一个新的存储库,将现有存储库中的一些文件引用到新的存储库中。

例子:

存储库 A 包含:

  • 目录 1
    • 源文件 1
    • 源文件 2
  • 目录 2
    • 源文件 3
    • 源文件 4

在 Repository BI 中,想要从 Repository A 引用源文件 3:

  • 目录 3
    • 源文件 5
    • 来自存储库 A 的源文件 3。

存储库 B 将在并非都可以访问存储库 A 的开发人员之间共享。

所以我的问题是:是否可以将一些文件从一个存储库引用到另一个存储库,这样当有权访问存储库 A 的开发人员更改原始文件时,这些更改将被存储库 B 发现?如果有可能,我该怎么做?

4

2 回答 2

2

Git 将文件视为整个存储库的内容,而不是文件的集合。因此,这很难做到。如果此功能很重要,我建议您切换到以文件为中心的 SCM 系统。

然而这是可能的,但相当笨拙。

使用您要跟踪的文件在 repo B 中创建一个孤立分支。将此文件合并到 repo B 中的另一个分支,例如 master 分支,可能使用 subtree-merge 算法。

你可以使用 gitolite 来限制从你的仓库访问一个分支。现在您可以将 repo B 添加到 repo A 作为子模块或作为远程并进行子树合并。(您可以在 git-scm.com 上阅读有关如何处理子模块和子树合并的更多信息)。

但是,您不能使用 gitolite 拒绝从整个 repo B 读取,而只能写入访问。如果您也在寻找防止读取的功能,则需要将文件放入存储库 C

于 2013-11-05T10:02:09.430 回答
0

我们在工作中用于在 repos 之间共享代码的解决方案是将共享代码放在 NuGet 包中。然后可以从任何 repo 中使用该包,并且您不必进行任何不稳定的 git 设置,并且您可以保持访问控制应有的状态。

于 2019-01-17T21:05:33.523 回答