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

时间:2013-09-29 19:35:52

标签: git github build config git-submodules

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

那说当我为自己构建应用程序时,我确实希望使用自己的密钥。因此,我希望得到一个普遍的公共回购,只需要保持私密和保密的最小修改。

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

应该可以借助子模块来帮助我的私人仓库(例如来自bitbucket)的子模块,但是我无法弄清楚对公众和我都有用的整个事情。< / p>

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

以下是我最后为https://github.com/amarchen/Wikipedia所做的事情:

  1. 主公共git项目有一个指向私有git存储库的子模块。该子模块被检查为类似“settings / AppStoreKeys”目录

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

  4. 如果您确实可以访问私有仓库,则可以通过“git submodule init”和“git submodule update”获取组件。这会在settings / AppStoreKeys

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

  7. 缺点 为了我的目的,它工作得很好。这是一个演示应用程序,我只是不希望人们研究代码过度使用真正的应用程序mixpanel键(以及其他任何键)。我也不关心使用其他键的潜在需求 - 它是一个演示应用程序,而不是支持的分支。

    然而,这种方法将我的私人仓库的地址暴露给每个人,这不是很酷。对于更严重的情况,我可能会反过来创建一个私有项目,它只是公共库的一个包装器(加上私钥),也许是一个公共app包装器。