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.配置文件
有时只需在源代码管理之外保留一个简单的配置文件就足够了,您可以使用它以某种方式加载 运行 时间值:例如:
- set environment variables
- 通过command line
传递参数
- 运行 一些用配置值替换标记的脚本
不过,您的问题是如何将 代码库 的一部分保密。有很多方法可以解决这个问题;这完全取决于您的项目结构,您如何管理构建、部署等。
2。多个分叉
一种方法是维护 multiple forks,以便您拥有私有和 public 存储库。仅将敏感提交放在私有存储库中。这样你的代码库仍然是一个单一的模块,如果你愿意的话。
3。多个模块
随着任何项目的发展,将软件拆分成单独的模块或存储库(例如核心、网络、配置、测试等)通常是有意义的。要签出并构建项目,您需要签出多个模块并将它们编译在一起。一些构建工具可以自动为您管理它,例如在您的本地 ~/.m2
存储库中维护快照构建。您可以做的第一件事就是将生产配置分离到一个单独的受限模块中。然后你可能有另一个带有开发配置的回购协议。
4。不要这样做...
我们在 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.配置文件
有时只需在源代码管理之外保留一个简单的配置文件就足够了,您可以使用它以某种方式加载 运行 时间值:例如:
- set environment variables
- 通过command line 传递参数
- 运行 一些用配置值替换标记的脚本
不过,您的问题是如何将 代码库 的一部分保密。有很多方法可以解决这个问题;这完全取决于您的项目结构,您如何管理构建、部署等。
2。多个分叉
一种方法是维护 multiple forks,以便您拥有私有和 public 存储库。仅将敏感提交放在私有存储库中。这样你的代码库仍然是一个单一的模块,如果你愿意的话。
3。多个模块
随着任何项目的发展,将软件拆分成单独的模块或存储库(例如核心、网络、配置、测试等)通常是有意义的。要签出并构建项目,您需要签出多个模块并将它们编译在一起。一些构建工具可以自动为您管理它,例如在您的本地 ~/.m2
存储库中维护快照构建。您可以做的第一件事就是将生产配置分离到一个单独的受限模块中。然后你可能有另一个带有开发配置的回购协议。
4。不要这样做...