维护秘密(从公共)补丁到 git 存储库的实用方法是什么



我正在github上为特定平台(Jolla Sailfish(做一个演示应用程序,它将有一些我不想让公众看到的ID/密钥。例如,我绝对不希望公众看到真正的Mixpanel或Google Analytics密钥。公共版本应该将它们留空或使用完全不同的密钥。

也就是说,当我为自己构建应用程序时,我确实希望使用自己的密钥。所以我想得到一个一般的公共存储库,只需进行最小的修改,即可保持私密性和保密性。

实现它的实用方法是什么?

在子模块的帮助下,它

应该以某种方式成为可能,其中一个子模块来自我的私有存储库(例如来自 bitbucket(,但我不知何故无法弄清楚对公共和我都有效的整个事情。

你会怎么做?或者有人在你自己的项目中遇到过类似的情况吗?

我在 dotfile 中所做的是拥有一个"私有"分支,因为我总是指定将哪些分支推送到哪些远程,所以从来没有问题。

这是我

最后为 https://github.com/amarchen/Wikipedia 所做的:

  1. 主公共 git 项目有一个指向私有 git 存储库的子模块。此子模块被签入到类似"settings/AppStoreKeys"目录中

  2. 如果您无权访问专用存储库,则无法签出组件,并且子目录中没有任何文件。公共存储库的其余部分将正常工作,没有任何 git 错误或其他任何错误。您的代码的第三方用户甚至可能没有注意到有一个私有设置子模块,除非您使用其他一些组件。

  3. 如果您确实有权访问私有存储库,则可以通过"git 子模块初始化"和"git 子模块更新"获取组件。这将在设置/应用商店密钥中创建您的私人文件

  4. 在运行时,您的代码会检查设置/AppStoreKeys 中是否存在文件,并从那里读取设置或回退到默认值

缺点就我而言,它工作得很好。这是一个演示应用程序,我只是不希望研究代码的人过度使用真正的应用程序混合面板键(以及任何其他键(。我也不关心使用其他键的潜在需求 - 这是一个演示应用程序,不适用于支持的分叉。

但是,这种方法向所有人公开我的私有存储库的地址,这不是很酷。对于更严重的情况,我可能会反过来创建一个私有项目,该项目只是公共库的包装器(加上私钥(,也许是一个公共应用程序包装器。

最新更新