【问题标题】:GIT workflow development (all files) vs production (partial files)GIT 工作流开发(所有文件)与生产(部分文件)
【发布时间】:2017-04-06 15:53:43
【问题描述】:

设置:

1 个 GIT 存储库,其中包含客户端/服务器/共享代码,当前位于 1 个分支上。

构建过程:

  • 客户端是基于网络的应用程序,需要 最小化/捆绑/等,生成一个文件
  • 服务器 暂时保持不变,虽然以后可能会捆绑

问题:

我不希望所有文件都在我的生产服务器上,只是客户端和服务器文件夹的捆绑版本。如果我将 master 分支拉进来,我会得到所有文件,而不仅仅是捆绑版本。

解决方案:

??? - 我该如何处理?创建额外的存储库,创建多个分支?这通常是如何完成的?

【问题讨论】:

    标签: git production dev-to-production


    【解决方案1】:

    通常,您希望将源代码控制、构建过程和可部署工件分开。 Git 主要用于源代码控制,公认的做法是只包含源代码。

    然后您将使用一些构建工具(Jenkins、bamboo 等)构建它 然后,您可以使用构建工具中的构建结果,或者如果您更喜欢使用 Nexus 或 artifactory 等工件的版本控制。

    这听起来可能很复杂,但确实可以避免将来出现很多问题。

    【讨论】:

    • 同意。您实际上是在谈论将代码从开发转移到生产的部署过程
    • 有什么特定于 Web 应用程序的吗?我目前正在将 node.js 用于服务器,将 webpack 用于客户端 javascript。目前正在调查,最终可能会回答我的问题:stackoverflow.com/questions/35054082/…
    • 无法根据经验发表评论,但以下answer 似乎在说下载所有文件。然而,下面的article 似乎也有意义(来自 java 背景)
    • 谢谢,我将接受这个答案并深入了解构建过程。
    • 很高兴能帮上忙 :-)
    【解决方案2】:

    您可以使用.gitattributes (5) export-ignore directive 选择版本控制中的文件,但在生产环境中不需要。

    如果您使用像 Capistrano 3 这样的部署系统,它实际上会使用git-archive (1)。此命令将创建要部署在发布文件夹中的存档,它将遵守 .gitattributes 文件中的 export-ignore 规则。


    对于您的客户端文件,您可以在本地或您部署的计算机上捆绑该文件,然后rsync 或以任何其他方式将其上传到生产计算机上的发布文件夹,然后再激活新版本。

    我还可以建议您将客户端文件实际部署到 CDN,而服务器只会使用来自 CDN 的版本化客户端提供 HTML 页面。

    【讨论】:

    • 谢谢,我去看看
    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2012-06-24
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多