【问题标题】:Hosting-specific code in projects: push to Github too?在项目中托管特定代码:也推送到 Github?
【发布时间】:2010-12-20 15:30:45
【问题描述】:

想象一下这个常见的场景:我一起编写了一个很酷的项目,我想与全世界分享。所以:我把它放在 Github 上,然后在我自己的网站上从 Github 获取它,这样人们就可以看到演示。这也使更新变得容易:只需从我的本地盒子推送到 Github,在我的服务器上获取。

我想跟踪访问者,因此我将 Google Analytics(分析)和其他一些特定于网站的内容(例如我网站上所有页面的全局标题)添加到项目中。但是,每个从 Github 上查看我的项目的人也会得到所有这些东西。

有一些解决方案可以防止这种情况发生。我可以为我的网站创建一个特定的“部署分支”,但这很麻烦。我可以在我的代码中进行某种切换 (if ip === myip showStats()),但这很难看。

另一种选择可能是使用 githooks,但我对此没有任何经验。

还有其他建议吗?人们在结帐时获得类似这样的特定于部署的代码时是否会感到烦恼?

【问题讨论】:

  • 我怀疑它不是 Java Web 应用程序,在这种情况下,您实际上可以配置 Web 应用程序或 Web 应用程序目录之外的所有内容?

标签: git deployment workflow hosting github


【解决方案1】:

类似于 Breun 的建议,(因此您的问题将得到双重回答)我使用 settings.py 文件部署我的 Python 项目,该文件定义了生产机器上所需的设置。 (debug=False,正确的数据库设置和文件路径...)

在文件末尾,我尝试像这样导入 developmentsettings.py:

try:
    from projectnaam import developmentsettings
except:
    pass

该文件在版本控制中不存在,因此这将失败并在服务器上静默传递。在我的开发机器上,我手动创建文件并覆盖特定设置以满足我的开发需求。 (比如 sqlite 而不是 postgres)

这可以扩展到更复杂的部署策略,包括 Fabric、Buildout、Capistrano 和 Chef 等。在(分布式)团队中工作时,这一切变得更加重要。

我现在的开发流程是这样的:编辑代码,$ git commit -m "comment",$ git push,$ fab deploy master production(

【讨论】:

    【解决方案2】:

    为特定于部署的设置创建配置文件。例如,您可以为任何默认设置设置一个 conf/defaults.conf,并让用户将任何本地部署特定的覆盖放在 conf/local.conf 中。

    【讨论】:

      【解决方案3】:

      并将你的 settings.php 文件添加到 .gitignore,否则你可能会上传它。

      与世界共享您的 Google 分析 (api) 代码并不是一个好主意,因为您的统计数据会因为有人使用您的代码而不更改它而搞砸。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        • 2019-10-14
        • 2018-05-15
        • 2013-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多