【问题标题】:Git: Having two different repos for public and deployment codeGit:公共代码和部署代码有两个不同的存储库
【发布时间】:2014-05-30 09:07:50
【问题描述】:

我有一个本地存储库,其中包含云部署的所有代码。此存储库包含大量特定于云的敏感文件。所有这些文件都已提交到部署云上托管的私有远程存储库。现在我想要某种方式将该代码提交到公共存储库,同时排除所有敏感数据文件。我正在经历this,但我认为我的情况有点不同。我当前的本地 repo 已经包含所有尚未添加到 .gitignore 文件的敏感文件。如果我碰巧从部署分支创建了一个公共分支,如下所示:

deployment:       A ---> B ---> C ---> D
                   \      \      \      \
                    \      \      \      \
public:           -> A'  -> B'  -> C'  -> D'

然后,对于第一次迭代 (A),我将在我的存储库中再次包含所有这些敏感文件。然后我必须执行this 来删除所有这些敏感文件,修改我的 .gitignore 以在将来排除这些文件,然后将公共分支推送到远程。

但是,我无法想象这在未来会如何发展。

我应该将我的公共分支合并到部署中吗? (我认为没有)

更新部署代码后,我如何将这些更改传播到公共分支?在这种情况下,我应该将部署分支与公共合并吗?

有没有更简单的方法来做这一切?

【问题讨论】:

    标签: git deployment version-control git-branch


    【解决方案1】:

    你能12 factor这个应用程序吗?换句话说,您可以将所有敏感的配置数据移动到环境变量或未签入版本控制的单个配置文件中吗? (您可能会签入该文件的“假样本”版本,其中包含假数据,作为创建真实配置文件的模板。)

    如果你能做到这一点,那么你做一次 git-sensitive-data-removal dance,然后发布你的代码。您的部署过程将从存储库外部的知名位置获取配置文件,或者设置环境变量或类似的东西,作为部署的最后一步。

    【讨论】:

    • 根据其他地方的一些建议,我想出了维护该项目的两个副本。一个用于部署,另一个用于公共查看。每次我提交部署存储库时,我都会将更改的文件复制到公共存储库并同时将它们提交到公共存储库,这样部署和公共存储库就会相互同步,并且不会丢失任何提交历史记录。显然,所有这一切都是通过一个脚本发生的,该脚本将所有敏感文件排除在复制到公共存储库之外。
    猜你喜欢
    • 2015-04-06
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多