Branching/Forking 只是父存储库的一部分

Branching/Forking just portion of parent repository

我们在 bitbucket 上有一个代码库,其中有一些 'confidential' 库。有没有一种方法可以创建分支或分支用于调查目的(对于非现场工作人员),其中不包含选定的机密文件,但对于所有其他文件,仍然能够推送、拉取、查看整个历史记录?

我已经能够通过在分支之间指定 files/folders 的高级映射在其他源代码控制中实现这一点,但我无法在 bitbucket 上找到类似的功能。

编辑 1: 这是我想要实现的示例:

Repo1(main):
 |-publicFolder
    |-file1
    |-file2
 |-privateFolder
    |-fileA
    |-fileB

Repo2(investigation):
 |-publicFolder
    |-file1
    |-file2

push/pull public 文件在这些回购中的可能性是无限的。远程工作者在 publicFolder 上工作,可以从主仓库中提取最新版本,并能够将他的更改推送到主仓库(或者某些管理员能够从调查仓库中提取到主仓库)。但是只能访问 Repo2 的工作人员永远无法查看 privatFolder

无法在单个 Git 存储库中执行此操作。 BitBucket 在 Git 之上没有其他功能可以限制某些文件(它会混淆提交的身份,从而改变校验和等)。然而,这是一个常见问题,最好的方法是将敏感数据分开。我可以想到一些方法来做到这一点。

1.配置文件

有时只需在源代码管理之外保留一个简单的配置文件就足够了,您可以使用它以某种方式加载 运行 时间值:例如:

不过,您的问题是如何将 代码库 的一部分保密。有很多方法可以解决这个问题;这完全取决于您的项目结构,您如何管理构建、部署等。

2。多个分叉

一种方法是维护 multiple forks,以便您拥有私有和 public 存储库。仅将敏感提交放在私有存储库中。这样你的代码库仍然是一个单一的模块,如果你愿意的话。

3。多个模块

随着任何项目的发展,将软件拆分成单独的模块或存储库(例如核心、网络、配置、测试等)通常是有意义的。要签出并构建项目,您需要签出多个模块并将它们编译在一起。一些构建工具可以自动为您管理它,例如在您的本地 ~/.m2 存储库中维护快照构建。您可以做的第一件事就是将生产配置分离到一个单独的受限模块中。然后你可能有另一个带有开发配置的回购协议。

4。不要这样做...