分支/分叉只是父存储库的一部分

时间:2015-10-14 17:41:04

标签: git github bitbucket

我们在bitbucket上有一个代码库,它有一些“机密”库。有没有办法为调查目的创建分支或分支(对于非现场工作人员),不包含选定的机密文件,但对于所有其他文件,仍然可以推送,拉动,查看整个历史记录?

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

EDIT1: 以下是我想要实现的示例:

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

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

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

1 个答案:

答案 0 :(得分:2)

在单个Git存储库中无法做到这一点。 BitBucket在Git之上没有额外的功能,允许一些文件被限制(它会破坏提交校验和的提交的身份等)。但是,这是一个常见问题,最好的方法是将敏感数据分开。我可以想到几种方法来做到这一点。

<强> 1。配置文件

有时只需在源代码控制之外保留一个简单的配置文件即可用于以某种方式加载运行时值:例如:

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

<强> 2。多个分叉

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

第3。多个模块

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

<强> 4。不要这样做......

if (file_exists('c:/windows/win.ini')) {}