1

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

也就是说,当我为自己构建应用程序时,我确实希望使用自己的密钥。因此,我想获得一个普遍公开的回购协议,并进行最小的修改,以保持私密和秘密。

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

借助来自我的私人仓库(例如来自bitbucket)的子模块之一的子模块,它应该以某种方式成为可能,但我不知何故无法弄清楚对公众和我都有效的整个事情。

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

4

2 回答 2

0

我在我的 dotfiles 中所做的是拥有一个“私有”分支,因为我总是指定哪些分支要推送到哪些遥控器,所以从来没有问题。

于 2013-09-30T23:36:47.570 回答
0

这是我最终为https://github.com/amarchen/Wikipedia所做的:

  1. 主要的公共 git 项目有一个指向私有 git 存储库的子模块。这个子模块被签入类似“settings/AppStoreKeys”目录

  2. 如果您无权访问私有仓库,则组件将无法检出,并且子目录中将没有任何文件。其余的公共回购将正常工作,没有任何 git 错误或其他任何东西。除非您使用其他一些组件,否则您的代码的第 3 方用户甚至可能不会注意到有一个私有设置子模块。

  3. 如果您确实有权访问私有存储库,则可以通过“git submodule init”和“git submodule update”获取组件。这会在 settings/AppStoreKeys 中创建您的私人文件

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

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

但是,这种方法将我的私人仓库的地址暴露给所有人,这不是很酷。对于更严重的情况,我可能会反过来创建一个私有项目,它只是公共图书馆的包装器(加上私钥),也可能是公共应用程序包装器。

于 2013-10-15T22:17:12.363 回答